| ||
Key point:分段函数参与运算过多(超过两次),产生了无法显示的结果(Inf, NaN等)。
Matlab的分段函数表示方式很多,有if-else的选择结构,有piecewise的函数,但我选择的是.*+这种形式的,这种形式可以把分段函数写在一个式子里,比较明了。
简单的例子:
t=0:0.1:30;
v=t.*(t<10)+10*(t>=10 & t<20)+(30-t).*(t<30 & t>=20);
plot(t,v);
axis([0 32 0 12]);
但在实际操作中,要注意,在取一个分段里的自变量时,其他分段里默认是0。比如t.*(t<10)时,t在10<=t<=30里为零,就是t.*(t<10)+0.*( t>=10 & t<=30)。所以这个时候你看t的话,t是301个值,只不过后面201个值是零。这样就会出现一种情况,可能是NaN*0,比如y=1/t,此时10<=t<=30就是Inf,无法显示。如底下蓝色线所示。
这个问题知道原理就好解决了,让无意义结果不出现。具体的解决方案就具体分析了。上面只要在10<=t<=30也取t就可以了。
这是实际中出现的图形,这个是出现了0/0的情况,是NaN的原因。