matlab分段函数输出图像问题v=linspace(60,120,2);if 60

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 22:27:30
matlab分段函数输出图像问题v=linspace(60,120,2);if 60
xT[OA+>ŌX5MܾQ &D MVV.F5^vI;?sY =,,VmR6;swsf'Ss3YYOޠ;M֫$$D;OB.fiBFQڜw`B]?|dQ,Fk@kxI#g,ki*ҍ 2 .HeVک}C@G? )o? 8ͅ㗺UBlSI\\pvMZq\0- I3goYuWϚ@x $q9VI2- ɭz7r\%3{CVB${̷:yFUfǐ,w5t4 0VYf JuHn~#ߗ'AߢO,!I^JTJ{EgCmP7{MRBFh6I=a!jd!ӷ mw cY'Z8kR k -|6q׸B3\tD nl$tnɕ8FLCwNh(^ =H<hsĀEF #$јZmVSAG U Q7,AiqWA5wus y]=oׄsQSZ,l"&키ޔu'":$6ܰeydGS ->?q|Or?C~N}? @%_B {b q՞1n׼̂mݻq{zp[ ug0VR! w:x}١D/7J

matlab分段函数输出图像问题v=linspace(60,120,2);if 60
matlab分段函数输出图像问题
v=linspace(60,120,2);
if 60

matlab分段函数输出图像问题v=linspace(60,120,2);if 60

这小段代码问题太多了,简直把我能想到的错误都犯全了. -_-||||

 

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);
for i=1:length(v)
    if  60<=v(i) && v(i)<100 c(i)=24000.*v(i)./55;
    elseif v(i)==100 c(i)=24000.*v(i)./80;
    elseif 100<v(i) && v(i)<=120  c(i)=24000.*v(i)./105;
    else c(i)=-5;
    end
end
plot(v,c);

 

正确写法之二(使用向量运算)

v=linspace(60,120,61);
c=ones(size(v))*5;
c(60<=v&v<100)=24000*v(60<=v&v<100)/55;
c(v==100)=24000*v(v==100)/80;
c(100<v&v<=120)=24000*v(100<v&v<=120)/105;
plot(v,c);