2012-01-26 4 views
3

私はMATLABである確率分布のエントロピーを見つけようとしていました。 Pのために、私はEとラジコンおもちゃを同じにするべきではありませんエントロピー関数の使用

E = -sum(p .* log2(p)) 

Echeck = entropy(p)

をやってみましたか?

エントロピーを言うんエントロピーのMatlabのヘルプは-sumのように定義された(p。* LOG2(P))、pは、ヒストグラムカウントはまた、そのエントロピーのためにuint8する論理以外の任意のクラスを変換しimhist.Butから返さ含まれてい 実際にはグレースケール画像のエントロピーを計算しようとしているので、ヒストグラムカウント計算はピクセル値を離散的にしたい。 私の目的にこの機能を使用するのは間違っていると思いますか? 良い選択肢はありますか?

+0

変数 'p'とは何ですか?式 'sum(p。* log2(p))'は、 'p'がベクトルの場合はスカラーを返し、関数' entropy'はグレースケール画像を表す行列を操作すると想定します。実際、エントロピー関数は、エントロピー(I)= -sum(imhist(I)。* log2(imhist(I)))によって定義される。 –

+0

@Chris Taylor、回答としてコメントを投稿する必要があります。 – Oli

+0

pは確率分布 - 私の場合の確率値のNX1ベクトルです。 – atlantis

答えて

3

はIコードをチェックするためにopen entropyを使用し、行が存在する:入力はUINT8に変換し、次に関数は入力のヒストグラムのエントロピーを計算していることを意味

if ~islogical(I) 
    I = im2uint8(I); 
end 
p = imhist(I(:)); 

、入力そのものではありません。

その違いを説明します。