why am i getting NaN from my function
1 回表示 (過去 30 日間)
古いコメントを表示
tomer orenshtein
2020 年 1 月 26 日
コメント済み: tomer orenshtein
2020 年 1 月 26 日
i was asked to write a function that gets b&w image and returns its entropy. im not allowed to use im_hist or entrtopy (obviously).
this is the function i wrote:
function [Entropy] = EntropyCalc(image)
image_hist = histogram(image);
values = image_hist.Values;
[size_x, size_y] = size(image);
total = size_x * size_y;
p = values./total;
Entropy = - sum(p.*log2(p));
end
but i keep getting NaN.
any ideas??
thanks!
2 件のコメント
採用された回答
Thiago Henrique Gomes Lobato
2020 年 1 月 26 日
As David said your log2(p) is not safe, you can solve this problem by using this line of code:
Entropy = - sum(p.*log2(p+eps));
3 件のコメント
Thiago Henrique Gomes Lobato
2020 年 1 月 26 日
編集済み: Thiago Henrique Gomes Lobato
2020 年 1 月 26 日
The difference is in the histogram function, you need to explicitely define the number of bins to 256 (make sure image is uint8) so it has the same result.
image_hist = histogram(image,256);
Or faster:
values = imhist(image(:));
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Descriptive Statistics についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!