I don't know why the answer of this code is NaN. Help me please. thanks so much
for a = 01:20
filename = [num2str(a,'%02d') '_training' '.tif'];
img = imread(filename);
img1=imrotate(img,90,'bilinear');
C=rgb2gray(img1);
%co-occurrence matrix
glcm=graycomatrix(C,'GrayLimits',[0 255],'NumLevels',256,'Offset',[-1 -1]);
p=glcm/sum(glcm(:));
entropy=0;
for i=1:256
for j =1:256
entropy=entropy-p(i,j)*log2(p(i,j));
end
end
kq(a,:)=[entropy];
end

1 件のコメント

Matt J
Matt J 2013 年 12 月 25 日
What variable represents "the answer"?

サインインしてコメントする。

 採用された回答

Matt J
Matt J 2013 年 12 月 25 日

0 投票

What prevents p(i,j) from being 0 in
entropy=entropy-p(i,j)*log2(p(i,j));
Note
>> 0*log(0)
ans =
NaN

3 件のコメント

Huy
Huy 2013 年 12 月 25 日
how can i fix it? how can i overcome this problem?
Matt J
Matt J 2013 年 12 月 25 日
編集済み: Matt J 2013 年 12 月 25 日
if p(i,j)==0
blablabla
end
or, discarding the for-loops,
entropy=p.*log(p);
entropy(isnan(entropy)) = blablabla
Huy
Huy 2013 年 12 月 25 日
thanks so much

サインインしてコメントする。

その他の回答 (1 件)

Image Analyst
Image Analyst 2013 年 12 月 25 日

0 投票

Often a small number is added to values before taking log
smallNumber = 1; % % Whatever...
p(p==0) = smallNumber;
Now do your log.

1 件のコメント

Huy
Huy 2013 年 12 月 26 日
thanks for your help

サインインしてコメントする。

質問済み:

Huy
2013 年 12 月 25 日

コメント済み:

Huy
2013 年 12 月 26 日

Community Treasure Hunt

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

Start Hunting!

Translated by