[急問]請高手指點超多重FOR迴圈與大型矩陣之問題 已回收

看板MATLAB作者 (只想做自己)時間16年前 (2009/06/22 03:38), 編輯推噓3(304)
留言7則, 3人參與, 最新討論串1/1
程式內碼如下 由於小弟常常到MATLAB的Command Window出現out of memory 請高手指點function解決S16(a,b,c,d,e,f,g,h,j,m,n,o,p,q,r,s)矩陣太大與FOR簡 FOR迴圈簡化之方法 感謝指點 總共有兩種迴圈分別為8個迴圈與16個迴圈 x=linspace(0.0001,1,100); for i=1:100 for a=1:1:M1-1 S(a)=binopdf(l1(a),M1-1,1/U)*(1-pr(a)); ss(a)=binopdf(l1(a),M1-1,1/U)*(1-ppa(a)); for b=1:1:M1-1-l1(a) S2(a,b)=binopdf(l2(b),M1-1-l1(a),1/(U-1))*S(a); ss2(a,b)=binopdf(l2(b),M1-1-l1(a),1/(U-1))*ss(a); for c=1:1:M1-1-l1(a)-l2(b) S3(a,b,c)=binopdf(l3(c),M1-1-l1(a)-l2(b),1/(U-2))*S2(a,b); for d=1:1:M1-1-l1(a)-l2(b)-l3(c) S4(d)=binopdf(l4(d),M1-1-l1(a)-l2(b)-l3(c),1/(U-3))*S3(a,b,c); for e=1:1:M1-1-l1(a)-l2(b)-l3(c) S5(d)=binopdf(l4(d),M1-1-l1(a)-l2(b)-l3(c),1/(U-3))*S4(a,b,c,d); for f=1:1:M1-1-l1(a)-l2(b)-l3(c)-l4(d)-l5(e) S6(f)=binopdf(l6(f),M1-1-l1(a)-l2(b)-l3(c)-l4(d)-l5(e),1/(U-5))* S5(a,b,c,d,e); for g=1:1:M1-1-l1(a)-l2(b)-l3(c)-l4(d)-l5(e)-l6(f) S7(a,b,c,d,e,f,g)=binopdf(l7(g),M1-1-l1(a)-l2(b)-l3(c)-l4(d)-l5(e) -l6(f),1/(U-6))*S6(a,b,c,d,e,f); for h=1:1:M1-1-l1(a)-l2(b)-l3(c)-l4(d)-l5(e)-l6(f)-l7(g) S8(a,b,c,d,e,f,g,h)=binopdf(l8(h),M1-1-l1(a)-l2(b)-l3(c)-l4(d)-l5(e) -l6(f)-l7(g),1/(U-7))*S7(a,b,c,d,e,f,g); for j=1:1:M1-1-l1(a)-l2(b)-l3(c)-l4(d)-l5(e)-l6(f)-l7(g)-l8(h) S9(a,b,c,d,e,f,g,h,j)=binopdf(l9(j),M1-1-l1(a)-l2(b)-l3(c)-l4(d) -l5(e)-l6(f)-l7(g)-l8(h),1/(U-8))*S8(,a,b,c,d,e,f,g,h); for m=1:1:M1-1-l1(a)-l2(b)-l3(c)-l4(d)-l5(e)-l6(f)-l7(g)-l8(h)-l9(j) S10(a,b,c,d,e,f,g,h,j,m)=binopdf(l10(m),M1-1-l1(a)-l2(b)-l3(c)-l4(d) -l5(e)-l6(f)-l7(g)-l8(h)-l9(j),1/(U-9))*S9(a,b,c,d,e,f,g,h,j); for n=1:1:M1-1-l1(a)-l2(b)-l3(c)-l4(d)-l5(e)-l6(f)-l7(g)-l8(h)-l9(j) -l10(m) S11(a,b,c,d,e,f,g,h,j,m,n)=binopdf(l11(n),M1-1-l1(a)-l2(b)-l3(c) -l4(d)-l5(e)-l6(f)-l7(g)-l8(h)-l9(j)-l10(m),1/(U-10)) *S10(a,b,c,d,e,f,g,h,j,m); for o=1:1:M1-1-l1(a)-l2(b)-l3(c)-l4(d)-l5(e)-l6(f)-l7(g)-l8(h)-l9(j) -l10(m)-l11(n) S12(a,b,c,d,e,f,g,h,j,m,n,o)=binopdf(l12(o),M1-1-l1(a)-l2(b)-l3(c) -l4(d)-l5(e)-l6(f)-l7(g)-l8(h)-l9(j)-l10(m)-l11(n),1/(U-11)) *S11(a,b,c,d,e,f,g,h,j,m,n); for p=1:1:M1-1-l1(a)-l2(b)-l3(c)-l4(d)-l5(e)-l6(f)-l7(g)-l8(h)-l9(j) -l10(m)-l11(n)-l12(o) S13(a,b,c,d,e,f,g,h,j,m,n,o,p)=binopdf(l13(p),M1-1-l1(a)-l2(b)-l3(c) -l4(d)-l5(e)-l6(f)-l7(g)-l8(h)-l9(j)-l10(m)-l11(n)-l12(o),1/(U-12)) *S12(a,b,c,d,e,f,g,h,j,m,n,o); for q=1:1:M1-1-l1(a)-l2(b)-l3(c)-l4(d)-l5(e)-l6(f)-l7(g)-l8(h)-l9(j) -l10(m)-l11(n)-l12(o)-l13(p) S14(a,b,c,d,e,f,g,h,j,m,n,o,p,q)=binopdf(l14(q),M1-1-l1(a)-l2(b) -l3(c)-l4(d)-l5(e)-l6(f)-l7(g)-l8(h)-l9(j)-l10(m)-l11(n)-l12(o) -l13(p),1/(U-13))*S13(a,b,c,d,e,f,g,h,j,m,n,o,p); for r=1:1:M1-1-l1(a)-l2(b)-l3(c)-l4(d)-l5(e)-l6(f)-l7(g)-l8(h)-l9(j) -l10(m)-l11(n)-l12(o)-l13(p)-l14(q) S15(a,b,c,d,e,f,g,h,j,m,n,o,p,q,r)=binopdf(l15(r),M1-1-l1(a)-l2(b) -l3(c)-l4(d)-l5(e)-l6(f)-l7(g)-l8(h)-l9(j)-l10(m)-l11(n)-l12(o) -l13(p)-l14(q),1/(U-14))*S14(a,b,c,d,e,f,g,h,j,m,n,o,p,q); for s=1:1:M1-1-l1(a)-l2(b)-l3(c)-l4(d)-l5(e)-l6(f)-l7(g)-l8(h)-l9(j) -l10(m)-l11(n)-l12(o)-l13(p)-l14(q)-l15(r) S16(a,b,c,d,e,f,g,h,j,m,n,o,p,q,r,s)=binopdf(l16(s),M1-1-l1(a)-l2(b) -l3(c)-l4(d)-l5(e)-l6(f)-l7(g)-l8(h)-l9(j)-l10(m)-l11(n)-l12(o) -l13(p)-l14(q)-l15(r),1/(U-15))*S15(a,b,c,d,e,f,g,h,j,m,n,o,p,q,r); end end end end end end end end end end end end end end end end s1(i)=((2^(2*log2(U)-1))*log2(U)/(U^2))*sum(sum(SERss2)) +log2(U)/(U^15)*sum(sum(sum(sum(sum(sum(sum(sum(sum(sum(sum(sum (sum(sum(sum(SER16)))))))))))))))); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.245.77

06/22 13:29, , 1F
哇..........真的好大@@||||
06/22 13:29, 1F

06/22 22:18, , 2F
binopdf可以放矩陣進去的吧? 最裡面的迴圈用:代替s呢?
06/22 22:18, 2F

06/23 01:35, , 3F
感謝D大回答D大是說最裡面迴圈s用別的變數取代?
06/23 01:35, 3F

06/23 14:03, , 4F
可以用":"表示矩陣中某一維的所有變數,就不用寫迴圈了
06/23 14:03, 4F

06/23 14:11, , 5F
因為這串用迴圈是沒辦法簡化的,只能用矩陣運算方式重寫
06/23 14:11, 5F

06/23 19:37, , 6F
D大感謝你的回應 不過小弟資質不夠 可以麻煩您舉個4個
06/23 19:37, 6F

06/23 19:37, , 7F
迴圈的例子? 非常感謝您
06/23 19:37, 7F
文章代碼(AID): #1AFemokg (MATLAB)
文章代碼(AID): #1AFemokg (MATLAB)