在Matlab中for循环下plot曲线绘制不显示曲线
clc,clear
T0=26;
k1=3.94;
k2=37.1;
k0=130.1;
k3=402.7;
prompt = 'What is the original value? ';
H=input(prompt)
for h0=0:H
if h0 < 50
Ts=T0
elseif (h0>=50)&&(h0<200)
Ts=(T0*(200-h0)+13.7*(h0-50))/150
else
Ts=k1+k2/(1+exp((h0+k0)/k3))
end
end
plot(h0,Ts,'r')
请问这是哪里出错了
问题出在这里:“for h0=0:H”。
这相当于C语言的“for(h0=0; h0<=H; h0++)”。和“h0=0:H”是不同的。
所以程序运行的时候h0只是一个数,或者说是一个1×1的矩阵,那最后plot的时候横坐标也就是“h0”只有一个数,那就只能plot一个点,就看不到了。
可以把plot换成stem,这样就理解更清楚了。也可以在工作区里双击变量,就能看到变量的矩阵形式了。
clc,clear
T0=26;
k1=3.94;
k2=37.1;
k0=130.1;
k3=402.7;
prompt = 'What is the original value? ';
H=input(prompt);
n=1:H;
Ts=zeros(1,H);
for h0=1:H
if h0 < 50
Ts(1,h0)=T0;
elseif (h0>=50)&&(h0<200)
Ts(1,h0)=(T0*(200-h0)+13.7*(h0-50))/150;
else
Ts(1,h0)=k1+k2/(1+exp((h0+k0)/k3));
end
end
plot(n,Ts,'r')