Entropy

11 ビュー (過去 30 日間)
Hari
Hari 2012 年 6 月 6 日
clear all;
close all;
clc;
x = imread('circuit.tif');
p = imhist(x);
[m,n] = size(p);
E = 0;
for i = 1:m
for j = 1:n
if(p(i,j) > 0)
E = E - (p(i,j) * log2(p(i,j)));
end
end
end
ex = entropy(p);
Why E and ex having different values ? How we can solve it ?
  2 件のコメント
Walter Roberson
Walter Roberson 2012 年 6 月 6 日
I do not have access at the moment to check: I wonder what the datatype of p is? If it turns out to be one of the integer data types, your expressions probably do not compute what you expect.
Image Analyst
Image Analyst 2012 年 6 月 6 日
p is a 1D variable since it's the counts. Also you didn't normalize p by dividing by numel(x).

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

回答 (1 件)

Image Analyst
Image Analyst 2012 年 6 月 6 日
Try this:
p(p==0) = [];
E2 = -sum(p .* log2(p))
E3 = entropy(x)

カテゴリ

Help Center および File ExchangeMultidimensional Arrays についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by