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
为什么会出现这么多运行结果呢?
你y(4)的第二个分支和第三个以及y(5)的那个分支后面没有加分号,matlab每次循环运行到这里都会显示一次结果,加上分号就可以了。最后如果想看结果的话,直接写y(4),y(5)即可。
你的y(5)可以放到循环外,直接用矩阵点乘计算即可,y(5) = 12.8092.*y4(i)-45.2431;最终修改如下:
你这个程序写的不是很好,关于matlab分段函数的表示方法。我在下面这个问题中将基本的方法都阐述了,你可以参考一下:http://zhidao.baidu.com/question/198805449915582565.html?oldq=1
本回答被提问者采纳