数学建模社区-数学中国

标题: 大家猜猜matlab 运算速度和 C 的运算速度那个更快一些? [打印本页]

作者: 冬季的期盼    时间: 2013-7-26 17:05
标题: 大家猜猜matlab 运算速度和 C 的运算速度那个更快一些?
编写了一个计算光栅的程序。
代码已经有了!大家可以尝试一下用c快还是matlab运行一下那个比较快!!

wave1=1548;
wave2=1553;
centwave=1550;
L=20000000; %光栅长度
PI=3.1415926;
dn0=0.0001;  %折射率调制
n=1.447;     %初始折射率
neff=n+dn0;  
vector0=centwave/(2*neff);  %原始波矢
num1=1000;   %波长分割数
num2=1000;   %光栅长度分割数
dL=L/num2;   
c=0.24e-7;   %啁啾周期参数
M=1;         %超高斯阶数
FWHM=0.8*L;  %半宽高
for p=1:1:num1
    wave=wave1+p*(wave2-wave1)/num1;
    w(p)=wave;
    a=[1,0;0,1];
    for q=0:1:num2
        dn=dn0*exp(-log(2)*(2*(q*dL-L/2)/FWHM)^(2*M));    %高斯切趾
        kapa=PI*dn/wave;
        vector=vector0+c*q*dL;                            %均匀啁啾
        dbeta=2*PI*n/wave-PI/vector;
        gama=sqrt(kapa*kapa-dbeta*dbeta);
        m=gama*dL;
        A=cosh(m)-i*dbeta/gama*sinh(m);
        B=-i*kapa/gama*sinh(m);
        C=i*kapa/gama*sinh(m);
        D=cosh(m)+i*dbeta/gama*sinh(m);
        b=[A,B;C,D];
        a=a*b;
    end
    ref=-a(2,1)/a(2,2);
    ref_f=abs(ref)*abs(ref);
    r(p)=10*log(ref_f);
    trans=a(1,1)-a(1,2)*a(2,1)/a(2,2);
    trans_f=abs(trans)*abs(trans);
    t(p)=10*log(trans_f);
end
result=zeros(num1,3);
for p=1:1:num1
    result(p,1)=w(p);
    result(p,2)=r(p);
    result(p,3)=t(p);
end
作者: 〃陌上浅歌    时间: 2013-7-26 18:49
猜matlab。。。
作者: madio    时间: 2013-7-26 20:11
论速度肯定是C好,毕竟是编译的程序,比解释的快多了
作者: yufeiyang    时间: 2013-7-27 11:01
matlab快,嘿嘿
作者: 冬季的期盼    时间: 2013-7-27 11:24
还有没有回答的?
在有三个人我公布答案!!





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5