24小时热门版块排行榜    

查看: 823  |  回复: 7
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

惜梦寻草

新虫 (初入文坛)

[求助] matlab程序调试

如题,程序如下,不知道为什么会报错,希望能帮助调试一下,谢谢!
clear
clc
a1=5.756;
a2=0.0983;
a3=0.2020;
a4=189.32;
a5=12.52;
a6=1.32e-2;
b1=2.860e-6;
b2=4.700e-8;
b3=6.113e-8;
b4=1.516e-4;
T=25;
f=(T-24.5).*(T+570.82);
A=28.0:0.01:32.0;
lamdap=1.064;  
lamdas=1.4:0.01:5.4;
lamdai=1./(1./lamdap-1./lamdas);
c=1;
c2=1;
for i=1:length(A)
    m=1;
    for n=1:length(lamdas)
        if  lamdai(n)>lamdas(n);
            lamdass(m)=lamdas(n);  
            lamdaii(m)=lamdai(n);
            np(m)=(a1+b1*f+(a2+b2*f)/(lamdap^2-(a3+b3*f)^2)+(a4+b4*f)/(lamdap^2-a5^2)-a6*lamdap^2)^(1/2);
            ns(m)=(a1+b1*f+(a2+b2*f)/(lamdass(m)^2-(a3+b3*f)^2)+(a4+b4*f)/(lamdass(m)^2-a5^2)-a6*lamdass(m)^2)^(1/2);
            ni(m)=(a1+b1*f+(a2+b2*f)/(lamdaii(m)^2-(a3+b3*f)^2)+(a4+b4*f)/(lamdaii(m)^2-a5^2)-a6*lamdaii(m)^2)^(1/2);
            w(m)=abs(np(m)./lamdap-ns(m)./lamdass(m)-ni(m)./lamdaii(m)-1./A);
            m=m+1;
        end
    end
    if min(w)<10^-5
        [x1,y1]=min(w);
        A1(c)=A(i);
        lamdas1(c)=lamdass(y1);
        lamdai1(c)=lamdaii(y1);
        lamdap2=lamdas1(c);
        lamdas2=(lamdap2+0.001):0.0001:6;
        lamdai2=1./(1./lamdap2-1./lamdas2);
        c=c+1;
        m2=1;
        for n2=1:length(lamdas2)
            if  lamdai2(n2)>lamdas2(n2)
                lamdass2(m2)=lamdas2(n2);
                lamdaii2(m2)=lamdai2(n2);  
                ns2(m2)=(a1+b1*f+(a2+b2*f)/(lamdass2(m2)^2-(a3+b3*f)^2)+(a4+b4*f)/(lamdass2(m2)^2-a5^2)-a6*lamdass2(m2)^2)^(1/2);
                ni2(m2)=(a1+b1*f+(a2+b2*f)/(lamdaii2(m2)^2-(a3+b3*f)^2)+(a4+b4*f)/(lamdaii2(m2)^2-a5^2)-a6*lamdaii2(m2)^2)^(1/2);
                np2(m2)=(a1+b1*f+(a2+b2*f)/(lamdap2^2-(a3+b3*f)^2)+(a4+b4*f)/(lamdap2^2-a5^2)-a6*lamdap2^2)^(1/2);
                w2(m2)=abs(np2(m2)/lamdap2-ns2(m2)/lamdass2(m2)-ni2(m2)/lamdaii2(m2)-1./A);
                m2=m2+1;
            end
        end
        if min(w2)<10^-6.07
            [x2,y2]=min(w2);
            A2(c2)=A(i);
            lamdasss2(c2)=lamdass2(y2);
            lamdaiii2(c2)=lamdaii2(y2);
            c2=c2+1;
        end
    end
end
plot(A1,lamdas1,A1,lamdai1,A2,lamdasss2,A2,lamdaiii2)
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jiahongen

新虫 (初入文坛)

呵呵,正在学习中
3楼2013-01-08 13:46:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 8 个回答

shutaham

金虫 (正式写手)

【答案】应助回帖

★ ★ ★
感谢参与,应助指数 +1
csgt0: 金币+1, 谢谢 2013-01-08 13:58:02
惜梦寻草: 金币+2 2013-01-09 18:57:26
In an assignment  A(I) = B, the number of elements in B and I must be the
same.

Error in Untitled (line 30)
            w(m)=abs(np(m)./lamdap-ns(m)./lamdass(m)-ni(m)./lamdaii(m)-1./A);
>>
估计问题出在那个 1./A 上
2楼2013-01-08 10:10:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

惜梦寻草

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by shutaham at 2013-01-08 10:10:51
In an assignment  A(I) = B, the number of elements in B and I must be the
same.

Error in Untitled (line 30)
            w(m)=abs(np(m)./lamdap-ns(m)./lamdass(m)-ni(m)./lamdaii(m)-1./A);
>&g ...

谢谢!那应该怎么改呢?A应该不是一个值
4楼2013-01-08 19:49:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lgycjpcqu

金虫 (正式写手)

【答案】应助回帖

★ ★ ★
感谢参与,应助指数 +1
csgt0: 金币+1, 谢谢 2013-01-09 09:22:05
惜梦寻草: 金币+2 2013-01-09 18:57:35
A向量中共有401个元素,m的取值范围由于判定语句
if  lamdai(n)>lamdas(n);
的存在必然会小于401(如果等于此判定就没有意义)
所以错误提示说,w和A中的元素要求相等。
如果语句
w(m)=abs(np(m)./lamdap-ns(m)./lamdass(m)-ni(m)./lamdaii(m)-1./A);
的意思说当上面的判定成立时,用A向量对应位置的元素计算w的数值的话,改成1/A(m)即可。
我也是初学者,呵呵希望对你有帮助!
5楼2013-01-09 08:58:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见