[問題] 請問如何將FOR迴圈改寫成矩陣運算已回收

看板MATLAB作者 (只想做自己)時間16年前 (2009/06/23 22:12), 編輯推噓4(4020)
留言24則, 6人參與, 最新討論串1/3 (看更多)
小弟實力不夠深 厚請高手開示 程式碼如下 非常感謝 如果無法改寫 麻煩請推文一下 M1、U、N0皆為1x1的正整數,x為1x100的正整數,L1~L4為1xM1-1的正整數 最主要是計算出 D(a,b,c,d) 迴圈內的值 但是 D(a,b,c,d)矩陣牽連到 s4(d)、C(a,b,c)與 B(a,b)與 A(a)內的值 for i=1:100 for a=1:1:M1-1 s1(a)=1-exp(-N0.*x(i)./L1(a)); A(a)=binopdf(L1(a),M1-1,1/U)*s1(a); for b=1:1:M1-1-L1(a) s2(b)=1-exp(-N0.*x(i)./L2(b)); B(a,b)=binopdf(L2(b),M1-1-L1(a),1/(U-1))*s2(b)*A(a); for c=1:1:M1-1-L1(a)-L2(b) s3(c)=1-exp(-N0.*x(i)./L3(c)); C(a,b,c)=binopdf(L3(c),M1-1-L1(a)-L2(b),1/(U-2))*s3(c)*B(a,b); for d=1:1:M1-1-L1(a)-L2(b)-L3(c) sa(d)=(2*N0./L4(d)).^0.5; sb(d)=(2*N0.*x(i)./L4(d)).^0.5; s4(d)=1-marcumq(sa(d),sb(d),1); D(a,b,c,d)=binopdf(L4(d),M1-1-L1(a)-L2(b)-L3(c),1/(U-3))*s4(d)*C(a,b,c); end end end end R(i)=log2(U)/(U^3)*sum(sum(sum(sum(D)))); end 抱歉先前有些變數沒說明很清楚 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.245.77

06/23 22:13, , 1F
@@看了2行就不想看了
06/23 22:13, 1F

06/23 22:13, , 2F
那樓上可以去看7869 XD
06/23 22:13, 2F

06/23 22:15, , 3F
沒註解 不想看 這種東西沒人想維護
06/23 22:15, 3F

06/23 22:48, , 4F
抱歉我完全不知道怎麼改寫成矩陣運算
06/23 22:48, 4F

06/23 23:11, , 5F
看了很久 還是覺得太複雜了 而且你的矩陣命名又和
06/23 23:11, 5F

06/23 23:11, , 6F
迴圈引數一樣 看得蠻累的
06/23 23:11, 6F

06/23 23:27, , 7F
迴圈變數跟矩陣變數會打架吧
06/23 23:27, 7F

06/23 23:33, , 8F
你的N0是1*1 x是1*(M1-1)?
06/23 23:33, 8F

06/23 23:40, , 9F
抱歉沒說明的很清楚
06/23 23:40, 9F
※ 編輯: hopebear 來自: 122.116.245.77 (06/24 00:21)

06/24 01:55, , 10F
這個看起來很像機率統計相關的程式,但這程式看起來
06/24 01:55, 10F

06/24 01:55, , 11F
很累,也許只是交作業之類的,不需要維護?但在matlab
06/24 01:55, 11F

06/24 01:56, , 12F
裡面,你用i,j之類的當變數,恩恩,勇敢...
06/24 01:56, 12F

06/24 01:57, , 13F
如果哪天你需要用到複數運算,你大概bug有的抓了
06/24 01:57, 13F

06/24 02:32, , 14F
其實這是數學式,但我必須要用MATLAB驗證它,原式FOR迴圈
06/24 02:32, 14F

06/24 02:34, , 15F
很大,根據D大的建議,我必須轉換矩陣運算
06/24 02:34, 15F

06/24 02:36, , 16F
才有機會計算出結果 謝謝
06/24 02:36, 16F

06/24 03:07, , 17F
像你現在這樣的程式是算不完還是會卡住?
06/24 03:07, 17F

06/24 03:10, , 18F
另外C(a,b,c) B(a,b) 跟 A(a)都需要記下來嗎?可不可以用
06/24 03:10, 18F

06/24 03:11, , 19F
像是臨時的變數一直更新它?
06/24 03:11, 19F

06/24 03:15, , 20F
另外只是覺得有興趣 你在驗證的數學式原型看起來是怎樣
06/24 03:15, 20F

06/24 03:18, , 21F
如果秀一下數學式 說不定樓上們會有好意見
06/24 03:18, 21F

06/24 03:23, , 22F
4個迴圈內還可以算但8個、16個就跑不了 ORZ
06/24 03:23, 22F

06/24 03:25, , 23F
不會一直更新a=1:1:M1-1,b=1:1:M1-1-a,c=1:1:M1-1-a-b
06/24 03:25, 23F

06/24 12:46, , 24F
這有可能改寫成矩陣運算? XD
06/24 12:46, 24F
文章代碼(AID): #1AGEAnc9 (MATLAB)
文章代碼(AID): #1AGEAnc9 (MATLAB)