[問題]矩陣運算相關已回收
小弟最近在弄共生矩陣,有一些運算式,基本上都寫出來了
可是跑出來的結果有點怪怪的
麻煩板上大大幫幫忙!
問題一
程式碼
P =
0.4320 0.1215 0.0131 0.0020 0.0003 0.0000 0
0.1216 0.1628 0.0348 0.0060 0.0008 0.0001 0.0000
0.0130 0.0347 0.0233 0.0072 0.0013 0.0002 0.0000
0.0020 0.0062 0.0070 0.0041 0.0012 0.0002 0.0000
0.0003 0.0008 0.0013 0.0011 0.0005 0.0001 0.0000
0.0000 0.0001 0.0001 0.0002 0.0001 0.0001 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
0 0.0000 0 0 0 0.0000 0
for i=1:8
for i=1:8
E(i,j)=P(i,j)*log(P(i,j)); %把P運算後交給E矩陣
end
end
E1=~isnan(E); %因為E矩陣裡面有NaN,我只要取不是NaN的作運算
E2=E(E1);
ENT=sum(sum(E2)); %最後把矩陣內元素不是NaN的元素全部相加,得到結果
輸出結果
E =
1.0e-004 * (我想問為什麼多出這個東西)
0 0 0 0 0 0 0 NaN
0 0 0 0 0 0 0 NaN
0 0 0 0 0 0 0 NaN
0 0 0 0 0 0 0 NaN
0 0 0 0 0 0 0 0.3881
0 0 0 0 0 0 0 NaN
0 0 0 0 0 0 0 0.3881
0 0 0 0 0 0 0 NaN
ENT =
7.7625e-005
ENT也變得很奇怪
問題二
for i=1:8
for i=1:8
C(i,j)=((i-j)^2)*P(i,j); %一樣接續上面的P矩陣,運算後給C矩陣
end
end
CON=sum(sum(C)); %最後把C矩陣內所有元素相加起來
輸出結果
C =
-0.1490 -0.1629 -0.1779 -0.1802 -0.1807 -0.1808 -0.1808 -0.1808
-0.1629 -0.1329 -0.1654 -0.1772 -0.1802 -0.1807 -0.1808 -0.1808
-0.1779 -0.1655 -0.1654 -0.1744 -0.1794 -0.1806 -0.1808 -0.1808
-0.1802 -0.1771 -0.1746 -0.1760 -0.1791 -0.1805 -0.1808 -0.1808
-0.1807 -0.1802 -0.1794 -0.1791 -0.1798 -0.1805 -0.1807 -0.1808
-0.1808 -0.1807 -0.1806 -0.1805 -0.1805 -0.1806 -0.1808 -0.1808
-0.1808 -0.1808 -0.1808 -0.1808 -0.1808 -0.1808 -0.1808 -0.1808
-0.1808 -0.1808 -0.1808 -0.1808 -0.1808 -0.1808 -0.1808 -0.1808
CON =
3.0565e-005
很奇怪,C矩陣內明明都有值,為什麼全部相加起來後卻變成這個值?
最後有個問題,因為我想要把矩陣內所有的元素相加起來,得到一個數值
我是用兩次sum函數,是我用錯了嗎?
謝謝板上大大耐心看完
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.171.63.206
推
09/15 22:12, , 1F
09/15 22:12, 1F
→
09/15 22:12, , 2F
09/15 22:12, 2F
→
09/16 00:47, , 3F
09/16 00:47, 3F