Finding TP, TN, FP, FN using histc. First Input must be a real non-sparse numeric array (error)

1 view (last 30 days)
Nataliya
Nataliya on 20 Aug 2019
Edited: Adam Danz on 21 Aug 2019
I am finding TP, TN, FP, FN (confusion matrix) of predicted and actual image. smapImg is the predicted/output image and gtImg is the actual/ground truth image.
TP = histc(smapImg(gtImg), 0:255);
FP = histc(smapImg(~gtImg), 0:255);
FN = histc(~smapImg(gtImg), 0:255);
TN = histc(~smapImg(~gtImg), 0:255);
I am getting this error "First Input must be a real non-sparse numeric array" while computing FN and TN, while TP and FP are computing correctely. Please help.

Accepted Answer

Adam Danz
Adam Danz on 20 Aug 2019
Edited: Adam Danz on 21 Aug 2019
The negation (~) is turnning the array into a logical array. As the error message indicates, the first input is expected to be numeric (not logical).
~smapImg(gtImg)
Example
t = uint8(rand(1,10))
class(t)
ans =
'uint8'
t2 = ~t;
class(t2)
ans =
'logical'
A reproduction of the error using the logical vector
histc(t2,1:3)
Error using histc
First Input must be a real non-sparse numeric array.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!