[問題] for迴圈太多 該如何改寫已回收
由於以前畢業的學長
寫了matlab程式 可是迴圈用了六七個
參數小的時候還好~ 只有3.4個迴圈 一兩分鐘就出來了
可是這個參數為7 就跑了好久 大約一天多了
因為這不是我的架構以及寫的程式~也不是很常碰matlab
所以改起來非常頭痛~ 不知道有沒有辦法利用其他的寫法
可以讓這個複雜的呼叫 可以簡單一些呢?
不好意思~ 因為真的不太瞭程式裡面在做什麼
而且matlab在我自己做的方向幾乎沒用到~
-----------感謝各位---------
clear all;
clc;
tic
p=7;%prime 值
n=7;%M-sequence 值
w=p*(n+1)/2; %threshold 值
U=p*(p-1)*n;%User number
S=[];
ini=7; %同時使用者初值
fin=294; %同時使用者終值
for user=ini:fin %active user number
U1=[];
u=U/n;
for u1=0:u
for u2=0:u
for u3=0:u
for u4=0:u
for u5=0:u
for u6=0:u
u7=user-u1-u2-u3-u4-u5-u6;
if u7>=0
if u7<=u
S(1,1)=u1;
S(1,2)=u2;
S(1,3)=u3;
S(1,4)=u4;
S(1,5)=u5;
S(1,6)=u6;
S(1,7)=u7;
U1=[U1;S];
end
end
end
end
end
end
end
end
[x,y]=size(U1);
q=(1/2)*p/(2*p^2-1);
for b=1:x,a=0;
k=U1(b,1);
if k<p
U2(b,1)=0;
elseif k==u
U2(b,1)=0;
else
for i=p:k
a=a+(1/2)*factorial(k)/(factorial(i)*factorial(k-i))*q^i*(1-q)^(k-i);
end;
U2(b,1)=a;
end
end
U3=sum(U2)/x;
er(user-ini+1)=U3;
end;
t=ini:fin;
semilogy (t,er,'r*') %bar:長條圖
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.163.243
※ 編輯: fukada0916 來自: 140.116.163.243 (04/14 19:45)
推
04/14 20:08, , 1F
04/14 20:08, 1F
→
04/14 20:09, , 2F
04/14 20:09, 2F
→
04/14 20:11, , 3F
04/14 20:11, 3F
推
04/14 20:13, , 4F
04/14 20:13, 4F
→
04/14 22:47, , 5F
04/14 22:47, 5F
→
04/14 22:48, , 6F
04/14 22:48, 6F
→
04/14 22:48, , 7F
04/14 22:48, 7F
→
04/15 09:00, , 8F
04/15 09:00, 8F
→
04/15 10:26, , 9F
04/15 10:26, 9F