Skipping 0 value in matrix computation wich lead to NaN.

1 view (last 30 days)
Hello, I'm Derry.
first, forgive me for my bad english,
I'm currently working on my Thesis, but I've got something that bothering me. I tried to calculate an image Contrast Weighted Entropy (CWH) value, using this script :
img = imread('image.tif');
img = imresize(img, [32, 32]);
[M N] = size(img);
numPix = M*N;
[count, bins] = imhist(img);
p = count/numPix;
u=mean(count);
val = (p-u).*p.* (log(p)/0.3010299957)*numPix;
val2=sum(val);
CWH=-1*val2;
imshow (img);
but it give me a NaN value because it contain a 0 value on "image.tif" matrix.
the point is, is there any way to pass a value of 0 so that the calculation can be completed?
thank you in advance
Derry Suia
  2 Comments
Stephen23
Stephen23 on 21 Jul 2016
Note that you shoudl avoid using pi as a variable name, because this is a very important inbuilt constant pi. For the same reason you should never use the names size, cell, length, i, j, etc, etc.
Derry Suia
Derry Suia on 21 Jul 2016
Hello Mr. Cobeldick,
thank you for your response, I did change "pi" as value name, but it still contain 0 value in matrix.
do you have any suggestion for my problem?
thanks
Derry Suia

Sign in to comment.

Accepted Answer

Thorsten
Thorsten on 21 Jul 2016
Edited: Thorsten on 21 Jul 2016
Before you take the log, get rid of the 0's:
p = p(p ~= 0);
  1 Comment
Derry Suia
Derry Suia on 21 Jul 2016
wow, it works like a charm!
thank you for for your answer, kind Sir/Madam!
cheers!
Derry Suia

Sign in to comment.

More Answers (0)

Categories

Find more on Printing and Saving in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!