精華區beta MATLAB 關於我們 聯絡資訊
我的主程式是這樣 照理說跑出來應該會有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