2012-09-21 70 views
1

我在excel中有一個矩陣。我需要對行進行歸一化,然後計算每行的熵(將其視爲概率分佈)。Excel中概率分佈的熵

例如,假設我的矩陣是:

2 0 3 5 
0 1 0 0 
1 0 3 2 

行標準化後的矩陣將變成:

0.2000   0 0.3000 0.5000 
    0 1.0000   0   0 
0.1667   0 0.5000 0.3333 

假設每行是一個概率分佈,每一行的熵:

1.0297 
    0 
1.0114 

我想計算以上熵值而不產生中間行標準化矩陣。

Excel中可以這樣做嗎?

注:一個概率分佈的熵定義爲:

H(X) = sum over all x {-p(x) * log(p(x))} 

回答

4

如果你有A1原來的矩陣:D3試試這個公式在F1

=SUM(-A1:D1/SUM(A1:D1)*IF(A1:D1<>0,LN(A1:D1/SUM(A1:D1))))

證實CTRL + SHIFT + Enter(這樣的大括號周圍會出現在公式欄中的公式)

複製到F3

0

假設你的熵由x LN X定義,我建議如下:

  1. 創建計算矩陣ln(x)對於每個原始單元格:IF(X> 0; LN(X); 0)
  2. 創建第二個矩陣,將x和ln(x)矩陣相乘計算行和:SUM A1:A4)

不過,我不知道如何做到這一點,沒有中間矩陣。你爲什麼要這個?