作者lucidity (...)
看板MATLAB
標題[問題] 程式跑很久
時間Thu Jan 19 13:20:18 2006
我的主程式是這樣
照理說跑出來應該會有700個數的兩個矩陣
可是已經跑了快一個小時都還沒跑完
謝謝回答了
index=1; %calculating refractive index of glass
for wl=300e-9:1e-9:999e-9
[nglass(index),kglass(index)] = glass(wl,0.0007,R1(index),T1(index));
index=index+1;
end
------------------
function [n,k] = glass(lamda,d,Rexp,Texp)
tempD=1;
for m=1.50:0.0005:1.57
for s=1e-7:1e-8:1e-4
n2=m-j*s;
n1=1;
r12=(n2-n1)/(n2+n1);
r21=(n1-n2)/(n2+n1);
t12=2*n1/(n1+n2);
t21=2*n2/(n1+n2);
theta=2*pi*n2*d/lamda;
R=abs(r12)^2+abs(t12*t21*r21*exp(-2*j*theta))^2/(1-abs(r21*r12*exp(-2*j*theta))^2);
T=abs(t12*t21*exp(-j*theta))^2/(1-abs(r21*r12*exp(-2*j*theta))^2);
DR=(R-Rexp)^2;
DT=(T-Texp)^2;
D=sqrt(DR+DT);
if D < tempD
n=m;
k=s;
tempD=D;
end
end
end
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.91.64.167
推 Gwaewluin:用迴圈跑就要有跑很久的覺悟 XD 01/19 13:28
→ Gwaewluin:我也有跑過兩小時的經驗 01/19 13:29
推 lucidity:阿 那囧了 01/19 13:33
推 Ysen:那就是你功力的問題囉... 01/19 15:07
→ Ysen:試試看別的方法吧,看你寫的..就知道你應該剛用MATLAB吧^^" 01/19 15:07
推 nothing1982:可在迴圈外先配置零矩陣給他 (預先配置記憶體) 01/19 16:09
→ nothing1982:nglass=zeros(1,700); 在迴圈前先加,速度會有差 01/19 16:10
→ nothing1982:function中的迴圈前也加零矩陣.會更快 01/19 16:11
※ 編輯: lucidity 來自: 219.91.64.167 (01/19 16:46)
→ lucidity:是剛用沒錯^^"" 謝謝樓上的 01/19 16:46