6
我有一個方形矩陣,它表示數據集中共現事件的頻率計數。換句話說,這些行表示特徵1的所有可能的觀察值,並且這些列是特徵2的可能觀察值。單元格(x,y)中的數目是特徵1被同時觀察爲x的次數特徵2是y。MATLAB矩陣的相互信息
我想計算矩陣中包含的互信息。 MATLAB有一個內置的information
函數,但它需要2個參數,一個用於x,另一個用於y。我將如何操作這個矩陣來獲得它期望的參數?
或者,我寫了自己的互信息函數,它需要一個矩陣,但我不確定它的準確性。它看起來不錯嗎?
function [mutualinfo] = mutualInformation(counts)
total = sum(counts(:));
pX = sum(counts, 1) ./ total;
pY = sum(counts) ./ total;
pXY = counts ./ total;
[h, w] = size(counts);
mutualinfo = 0;
for row = 1:h
for col = 1:w
mutualinfo = mutualinfo + pXY(row, col) * log(pXY(row, col)/(pX(row)*pY(col)));
end;
end;
end
該函數返回值相同本人原創,所以我相信他們是等效的。不過,你的更優雅。 – Colin 2011-05-30 17:14:11