查看单个帖子
旧 2008-07-20, 10:36   #1
sa7312
初级会员
 
注册日期: 2008-07-20
年龄: 51
帖子: 5
声望力: 0
sa7312 正向着好的方向发展
默认 [求助]用MATLAB来计算一些科学数据,但用FOR循环计算时发现速度太慢

  各位大侠,我是一个处于偏僻山区的教育者,现在急用MATLAB来计算一些科学数据,但用FOR循环计算时发现速度太慢,不知道还有什么办法解决。请大侠们多多帮且我啊。太恩不言谢,兄弟就此拜托了。
  以下是我这个刚学MATLAM的阿呆(:cry:) 的计算程序,请大侠们帮看看并提出增加速度的方案,小的在这有礼了!
  k=0.1:0.0000005:0.91;
j=1;
for m=0.1:0.0000005:0.91
e0=8.85*10^(-12); p0=4*pi*10^(-7);c0=3*10^8;a=3*10^(-10);
na=sqrt(9.0);nb=sqrt(1);nc=sqrt(4);nd=sqrt(1.0);ng=sqrt(16);nh=1.0;
da=0.5*a;db=0.5*a;dc=0.5*a;dd=0.5*a;dg=0.5*a;dh=0.5*a;
g0=sqrt(e0/p0)*1;
ga=g0*na;gb=g0*nb;gc=g0*nc;gd=g0*nd;gg=g0*ng;gh=g0*nh;
sa=-na*pi*m;sb=-nb*pi*m;sc=-nc*pi*m;sd=-nd*pi*m;sg=-ng*pi*m;sh=-nh*pi*m;
A=[cos(sa),-i*sin(sa)/ga;-i*ga*sin(sa),cos(sa)];B=[cos(sb),-i*sin(sb)/gb;-i*gb*sin(sb),cos(sb)];
C=[cos(sc),-i*sin(sc)/gc;-i*gc*sin(sc),cos(sc)];D=[cos(sd),-i*sin(sd)/gd;-i*gd*sin(sd),cos(sd)];
G=[cos(sg),-i*sin(sg)/gg;-i*gg*sin(sg),cos(sg)];H=[cos(sh),-i*sin(sh)/gh;-i*gh*sin(sh),cos(sh)];
M1=(G*H)^(5)*(A*B)^(5)*(C*D)^(5)*(B*A)^(5)*(H*G)^(5);
A1=M1(1,1);B1=M1(1,2);C1=M1(2,1);D1=M1(2,2);
r1=2*g0/(A1*g0+B1*g0^2+C1+D1*g0);
f1=r1*r1';
R1(1,j)=f1;
j=j+1;
end
plot(k,R1,'k');axis([0.1,0.9,0,1]),ylabel('Transmission');
sa7312 当前离线   回复时引用此帖