v=linspace(60,120,2);
if 60<=v<100 c=24000.*v./55;
else if v==100 c=24000.*v./80;
else if 100<v<=120 c=24000.*v./105;
else s=-5;
end
end
end
plot(v,c);
手算的话不该是直线啊 为何输出是直线?
这小段代码问题太多了,简直把我能想到的错误都犯全了....... -_-||||
1、linspace取点太少,只有两个点,无论怎么算都只能得到直线;
2、if语句不适合使用向量作为判断条件,因为只有向量所有元素都为真的时候才会执行;
3、关系运算不能连写,例如60<=v<100的含义并不是(60<=v)&&(v<100),而是(60<=v)<100,显然,表达式(60<=v)作为关系运算,得到的结果或0或1,肯定是小于100的,所以(60<=v)<100的结果为真,因而,会直接执行if的第一个分支,后面的都不可能被执行到。
4、MATLAB中有elseif关键词,尽管也可以用else if,但更推荐前者;
5、最后else的s算是什么?
正确写法之一(使用for循环)
v=linspace(60,120,61);
正确写法之二(使用向量运算)
v=linspace(60,120,61);