matlab分段函数表达的问题

x4=linspace(103.104,219.002,10);
len=length(x4);
for i=1:len
if x4(i)>=103.104&x4(i)<149.266;
y4(i)=-0.0009*(x4(i)-103.104).^2-0.2886*(x4(i)-103.104)+50;
elseif x4(i)>=149.266&x4(i)<197.62;
y4(i)=0.0017*(x4(i)-149.266).^2-0.2532*(x4(i)-149.266)+36.5873
elseif x4(i)>=197.62&x4(i)<=219.002;
y4(i)=0.0008*(x4(i)-197.62).^2-0.1335*(x4(i)-197.62)+27.5714
end
y5(i)=12.8092*y4(i)-45.2431
end

y5 =

595.2169 545.7002 492.3601 435.1964 406.6880 371.5329 343.6000 322.8892 294.1228

y5 =

595.2169 545.7002 492.3601 435.1964 406.6880 371.5329 343.6000 322.8892 294.1228

y5 =

595.2169 545.7002 492.3601 435.1964 406.6880 371.5329 343.6000 322.8892 294.1228

y5 =

595.2169 545.7002 492.3601 435.1964 406.6880 371.5329 343.6000 322.8892 294.1228

y4 =

50.0000 46.1343 41.9701 37.5074 35.2818 32.5372 30.3565 28.7397 26.4939

y5 =

595.2169 545.7002 492.3601 435.1964 406.6880 371.5329 343.6000 322.8892 294.1228

y4 =

50.0000 46.1343 41.9701 37.5074 35.2818 32.5372 30.3565 28.7397 26.4939

y5 =

595.2169 545.7002 492.3601 435.1964 406.6880 371.5329 343.6000 322.8892 294.1228

y4 =

Columns 1 through 9

50.0000 46.1343 41.9701 37.5074 35.2818 32.5372 30.3565 28.7397 26.4939

Column 10

25.0827

y5 =

Columns 1 through 9

595.2169 545.7002 492.3601 435.1964 406.6880 371.5329 343.6000 322.8892 294.1228

Column 10

276.0456
为什么会出现这么多运行结果呢?

第1个回答  2014-04-04

    你y(4)的第二个分支和第三个以及y(5)的那个分支后面没有加分号,matlab每次循环运行到这里都会显示一次结果,加上分号就可以了。最后如果想看结果的话,直接写y(4),y(5)即可。

    你的y(5)可以放到循环外,直接用矩阵点乘计算即可,y(5) = 12.8092.*y4(i)-45.2431;最终修改如下:

x4=linspace(103.104,219.002,10);
len=length(x4);
for i=1:len
if x4(i)>=103.104&x4(i)<149.266;
y4(i)=-0.0009*(x4(i)-103.104).^2-0.2886*(x4(i)-103.104)+50;
elseif x4(i)>=149.266&x4(i)<197.62;
y4(i)=0.0017*(x4(i)-149.266).^2-0.2532*(x4(i)-149.266)+36.5873;
elseif x4(i)>=197.62&x4(i)<=219.002;
y4(i)=0.0008*(x4(i)-197.62).^2-0.1335*(x4(i)-197.62)+27.5714;
end
end
y5(i)=12.8092.*y4(i)-45.2431;

    你这个程序写的不是很好,关于matlab分段函数的表示方法。我在下面这个问题中将基本的方法都阐述了,你可以参考一下:http://zhidao.baidu.com/question/198805449915582565.html?oldq=1

本回答被提问者采纳
相似回答