24小时热门版块排行榜    

查看: 797  |  回复: 1

cdg234

新虫 (初入文坛)

[求助] DFB激光器分析程序运算耗时太久

写了个1/4相移激光器的程序,但运算太慢,一个循环要40几秒,要循环121次,如果while判断eps>10e-14为真还要改变初始值,重新做循环,所以不知道还要多久,看网上说可以向量化节省时间,但弄了一下午也没弄好,因为向量化过程中出现四维乘三维矩阵,老是报错,附上部分未向量化代码,求各位大神支招,主要是将两个for循环向量化,同时考虑两个子方程的适应性。叫改用其他软件编程就算了,本科学的编程少,matlab也是初学。只有5个金币了,请见谅。



------------

    lambda=linspace(lambda00-detl,lambda00+detl,11);
    CC=linspace(C00-detC,C00+detC,11);
    E=zeros(2,s+1);
    T=zeros(2,2,s);
    P=zeros(2,2);
    AA=zeros(11,11);
    N=zeros(1,s+1);
    neff=zeros(1,s+1);
    S=zeros(1,s+1);
    for m=1:11
        for n=1:11
            n1=neffth;
            detn=1;
             E(1,1)=0;E(2,1)=1;
            while detn>1e-15
                N(1,1)=RateEquation(lambda(n),CC(m),J,ath,detth,E(1,1),E(2,1));
                g=A0*(N(1,1)-N0)-A1*(lambda(n)-(lambda0-A2*(N(1,1)-N0)))^2;
                a=L*(Tao*g-aloss)/2;
                neff(1,1)=n0+Tao*dn*N(1,1);
                S(1,1)=2*VP*neff(1,1)*ng*lambda(n)*CC(m)^2*(abs(E(1,1))^2+abs(E(2,1))^2)/(h*c);
                detn=abs(neff-n1);
                n1=neff(1,1);
            end
                det=L*(2*pi*neff(1,1)/lambda(n)-2*pi*ng*(lambda(n)-lambdaB)/(lambda(n)*lambdaB)-pi/period);
                T(:,:,1)=Matrix(kL,a,det,ritio/R1);
                for i=2:R1
                    E(:,i)=T(:,:,i-1)*E(:,i-1);
                    N(1,i)=RateEquation(lambda(n),CC(m),J,ath,detth,E(1,i),E(2,i));
                    g=A0*(N(1,i)-N0)-A1*(lambda(n)-(lambda0-A2*(N(1,i)-N0)))^2;
                    a=L*(Tao*g-aloss)/2;
                    neff(1,i)=n0+Tao*dn*N(1,i);
                    S(1,i)=2*VP*neff(1,i)*ng*lambda(n)*CC(m)^2*(abs(E(1,i))^2+abs(E(2,i))^2)/(h*c);
                    det=L*(2*pi*neff(1,i)/lambda(n)-2*pi*ng*(lambda(n)-lambdaB)/(lambda(n)*lambdaB)-pi/period);
                    T(:,:,i)=Matrix(kL,a,det,ritio/R1);
                    
                end
                P(1,1)=exp(-1i*theta);P(1,2)=0;P(2,1)=0;P(2,2)=exp(1i*theta);
                E(:,R1+1)=T(:,:,R1)*E(:,R1);
                E(:,R1+1)=P*E(:,R1+1);
                N(1,R1+1)=RateEquation(lambda(n),CC(m),J,ath,detth,E(1,R1+1),E(2,R1+1));
                g=A0*(N(1,R1+1)-N0)-A1*(lambda(n)-(lambda0-A2*(N(1,R1+1)-N0)))^2;
                a=L*(Tao*g-aloss)/2;
                neff(1,R1+1)=n0+Tao*dn*N(1,R1+1);
                S(1,R1+1)=2*VP*neff(1,R1+1)*ng*lambda(n)*CC(m)^2*(abs(E(1,R1+1))^2+abs(E(2,R1+1))^2)/(h*c);
                det=L*(2*pi*neff(1,R1+1)/lambda(n)-2*pi*ng*(lambda(n)-lambdaB)/(lambda(n)*lambdaB)-pi/period);
                T(:,:,R1+1)=Matrix(kL,a,det,(1-ritio)/(s-R1));
                for i=(R1+2):s
                    E(:,i)=T(:,:,i-1)*E(:,i-1);
                    N(1,i)=RateEquation(lambda(n),CC(m),J,ath,detth,E(1,i),E(2,i));
                    g=A0*(N(1,i)-N0)-A1*(lambda(n)-(lambda0-A2*(N(1,i)-N0)))^2;
                    a=L*(Tao*g-aloss)/2;
                    neff(1,i)=n0+Tao*dn*N(1,i);
                    S(1,i)=2*VP*neff(1,i)*ng*lambda(n)*CC(m)^2*(abs(E(1,i))^2+abs(E(2,i))^2)/(h*c);
                    det=L*(2*pi*neff(1,i)/lambda(n)-2*pi*ng*(lambda(n)-lambdaB)/(lambda(n)*lambdaB)-pi/period);
                    T(:,:,i)=Matrix(kL,a,det,(1-ritio)/(s-R1));
                end  
                E(:,s+1)=T(:,:,s)*E(:,s);
                AA(m,n)=abs(E(2,s+1));
               
        end
    end
    eps=min(min(AA));
  

---------------

   
            

function N=RateEquation(lambda,CC,J,ath,detth,E1,E2)
             syms x;
             L=250e-6;
             N0=1.5e24;aloss=4e3;A0=2.7e-20;Tao=0.35;
             n0=3.41351524;dn=-1.8e-26;
             c=3e8; ng=3.7;period=227.039e-9;
             lambdaB=2*n0*period;
             A2=2.7e-32;A1=1.5e-21;non=1.5e-23;
             to=4e-9;q=1.60217733e-19;d=0.12e-6;B=1e-16;
             C=3e-41;
             VP=8.854e-12; h=6.6260693e-34;
             Nth=N0+(aloss+2*ath)/(A0*Tao);  
             neffth=n0+Tao*dn*Nth;
             lambdath=2*pi*lambdaB*(neffth+ng)/(detth*lambdaB+2*pi*ng+lambdaB*pi/period);
             lambda0=lambdath+A2*(Nth-N0);
             %稳态解
             g=A0*(x-N0)-A1*(lambda-(lambda0-A2*(x-N0)))^2;
             neff=n0+Tao*dn*x;
             S=2*VP*neff*ng*lambda*CC^2*(abs(E1)^2+abs(E2)^2)/(h*c);
             f=(1+non*S)*J/(q*d)-((x/to+B*x^2+C*x^3)*(1+non*S)+c*g*S/ng);
             F=sym2poly(f);            
             Nroots1=roots(F);
             NN=Nroots1==real(Nroots1);
             Nroots2=Nroots1(NN);
             Nroots2(Nroots2<0)=[];
             N=min(Nroots2);
            
function T=Matrix(k,a,d,ritio)
T=zeros(2,2);
r=((a-1i*d)^2+k^2)^0.5;
T(1,1)=cosh(r*ritio)+(a-1i*d)*sinh(r*ritio)/r;
T(1,2)=-1i*k*sinh(r*ritio)/r;
T(2,1)=1i*k*sinh(r*ritio)/r;
T(2,2)=cosh(r*ritio)-(a-1i*d)*sinh(r*ritio)/r;
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cdg234

新虫 (初入文坛)

大神帮忙啊
2楼2014-02-13 08:58:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 cdg234 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[找工作] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +3 Vi50GxzrFcSG 2026-08-07 4/200 2026-08-08 10:39 by 3OOjAIS77qg2
[硕博家园] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +3 Vi50GxzrFcSG 2026-08-07 6/300 2026-08-08 10:19 by 3OOjAIS77qg2
[教师之家] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 HEQlVqMTIA7d 2026-08-07 4/200 2026-08-08 08:27 by 6vVgjDL4CnGu
[基金申请] 基金中了 +14 laoda193707 2026-08-06 14/700 2026-08-08 00:23 by 实验小白ha
[基金申请] 关于filecode +4 布布和一二 2026-08-07 7/350 2026-08-07 22:55 by zhanghaozhu
[基金申请] 娱乐 +6 Tide man 2026-08-03 6/300 2026-08-07 22:40 by 铁帽子农民
[基金申请] 固定端突然变了,今天 +6 archvillain 2026-08-06 10/500 2026-08-07 16:03 by 医学老男孩
[基金申请] filecode与中标关系的预测 +3 布布和一二 2026-08-07 3/150 2026-08-07 15:09 by gltch
[基金申请] filecode变化情况 +6 布布和一二 2026-08-07 22/1100 2026-08-07 14:45 by 且听虎啸
[论文投稿] 十年后又回来了,论文投稿求助 +4 哈哈114477 2026-08-01 4/200 2026-08-07 14:39 by jgy194592
[基金申请] 大家散了吧,后缀研究没有意义,别浪费时间了,过好目前的每一天,不要焦虑 +5 Tide man 2026-08-06 7/350 2026-08-07 13:11 by 医学老男孩
[基金申请] 关于豆爷回答的JTJC与%2F数量 +4 yang182083 2026-08-06 6/300 2026-08-07 12:43 by 虫友是什么虫
[基金申请] filecode +8 布布和一二 2026-08-06 11/550 2026-08-06 20:41 by tangpu318
[基金申请] 求各位大神看下 100+6 hpkpkpkp 2026-08-05 33/1650 2026-08-06 14:49 by zhiyanjiang
[基金申请] 影响面上的因素 +8 布布和一二 2026-08-05 11/550 2026-08-06 10:41 by 宝贝虫子
[基金申请] 8月时间戳变的,举个手。玩一下,释放压力 +9 archvillain 2026-08-04 11/550 2026-08-05 20:06 by wlwhappy
[基金申请] 好消息?这个有何含义??? +8 Tide man 2026-08-05 10/500 2026-08-05 16:14 by xmuxiaoyu
[考博] 【2027博士申请】纳米药物递送方向 20+3 13586093586 2026-08-03 4/200 2026-08-05 09:59 by lfy8008
[基金申请] 有没有H口的?有收到消息的吗? +3 超级海虾 2026-08-04 3/150 2026-08-04 17:26 by 学教育滴
[基金申请] 面上提前没消息,有中的吗 +14 archvillain 2026-08-02 18/900 2026-08-04 14:42 by archvillain
信息提示
请填处理意见