matlab分段函数编程(急急急,好的加分!)

我是matlab新手,做一个分段函数
我就不全列出来了,简单就是
l1=60;l2=1200;l3=60;l4=60;
f1=0.008;f2=0.008;f3=0.008;f4=0.008;
c1=1300;c2=1300;c3=1300;c4=260;
dt=3.846;
dx=10;
d1=2;d2=2;d3=2;d4=2;
Q=150;
rho=8.34;
mi=1150;
cd0=450;
cda=300;
fr=12;
s=pi*(d1/2)^2;
u10=Q/s;
u20=u10;
u30=u20;
u40=u30;
x=20;
if x<=l1
px0=2*mi*(u10^2)*f1.*(l1-x)/d1+2*mi*(u20^2)*f2*(l2+cd0)/d2+2*mi*(u30^2)*f3*(l3+cda)/d3
elseif x>l1&x<(l2+l1)
px0=2*mi*(u20^2)*f2*(l1+l2-x+cd0)/d2+2*mi*(u30^2)*f3*(l3+cda)/d3
elseif x>(l1+l2)&x<(l1+l2+l3)
px0=2*mi*(u30^2)*f3*(l1+l2+l3+cda-x)/d3
elseif x>(l1+l2+l3)&x<(l1+l2+l3+l4)
px0=2*mi*(u20^2)*f2*(l2+cd0)/d2+2*mi*(u30^2)*f3*(l3+cda)/d3
else
fprintf('x is invalid')
end
px0

但运行结果不对,我也不清楚这个px0该怎么去定义,我知道这个貌似要先定义,但我不会。哪位高手帮我解答一下!
谢谢!
很急,在线等!
我只想知道究竟哪里不对,一楼,等于本身就是没有的。二楼,我也知道代码有问题,但是不知道哪里不对。对了不就得到正确结果了吗
下面是我修改的程序,但是运行后,ans=1
l1=60;l2=1200;l3=60;l4=60;
f1=0.008;f2=0.008;f3=0.008;f4=0.008;
c1=1300;c2=1300;c3=1300;c4=260;
dt=3.846;
dx=10;
d1=2;d2=2;d3=2;d4=2;
Q=150;
rho=8.34;
mi=1150;
cd0=450;
cda=300;
fr=12;
s=pi*(d1/2)^2;
u10=Q/s;
u20=u10;
u30=u20;
u40=u30;
x=10:10:1300;
px0=0;
if x<=l1
px0=2*mi*(u10^2)*f1.*(l1-x)/d1+2*mi*(u20^2)*f2*(l2+cd0)/d2+2*mi*(u30^2)*f3*(l3+cda)/d3
elseif x>l1&x<(l2+l1)
px0=2*mi*(u20^2)*f2*(l1+l2-x+cd0)/d2+2*mi*(u30^2)*f3*(l3+cda)/d3
elseif x>(l1+l2)&x<(l1+l2+l3)
px0=2*mi*(u30^2)*f3*(l1+l2+l3+cda-x)/d3
elseif x>(l1+l2+l3)&x<(l1+l2+l3+l4)
px0=2*mi*(u20^2)*f2*(l2+cd0)/d2+2*mi*(u30^2)*f3*(l3+cda)/d3
end
px0

第1个回答  2010-05-25
matlab里面变量不需要预先声明变量类型,直接赋值就可以了。
如果结果不对,应该是
“if x<=l1
px0=2*mi*(u10^2)*f1.*(l1-x)/d1+2*mi*(u20^2)*f2*(l2+cd0)/d2+2*mi*(u30^2)*f3*(l3+cda)/d3”
代码的问题。
px0 =

4.2996e+007
第2个回答  2010-06-06
matlab不太会弄,一两句也说不太。清联系下,可以试着帮你弄下。本回答被提问者采纳
第3个回答  2010-05-25
如果想先定义 在if前写px0=0; 给个初值,另外所有elseif的第一个不等都需要再加个等于(大于等于)
相似回答