[問題]矩陣運算相關已回收

看板MATLAB作者 (幫幫)時間14年前 (2011/09/15 21:41), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串1/1
小弟最近在弄共生矩陣,有一些運算式,基本上都寫出來了 可是跑出來的結果有點怪怪的 麻煩板上大大幫幫忙! 問題一 程式碼 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
for i=1:8, for i=1:8 是哪招.... 第二個是J吧
09/15 22:12, 1F

09/15 22:12, , 2F
還有不要用for loop了, E=P.*log(P)不就好了(還最佳化過)
09/15 22:12, 2F

09/16 00:47, , 3F
我真蠢....謝謝你
09/16 00:47, 3F
文章代碼(AID): #1ESW28iP (MATLAB)