matlab这个分段函数图像怎么画?

题目是这样的:
编写下列分段函数myfun,然后利用此函数画出其在[-10,10]区间上的图形:
y=-1 x<0
2x+3 0<=x<=5
15 x>5
这是我写的函数
function y=myfun(x)
if x<0
y=-1
elseif x>5
y=15
else
y=x.*2+3
end
于是我输入plot(x,myfun(x))时出来的是一条直线,根本不是该函数的图像。本人初学者,希望各位高手们能告诉我正确的输入命令,小弟谢谢了~

第1个回答  2010-04-11
这是一个很典型的问题哈

问题出在这里:myfun的输入x你是当做单个数字来处理的,而实际你plot(x,myfun(x))里的x是一个数组,所以在myfun的if判断里,只取了第一个元素x(1)做判断,然后用判断的结果来计算所有的x(i)

你要写成这样,我写个简单点的,你自己照着改
x=-1:0.1:1;
y=x.*(x>0) - 2 * x .* (x<0)
plot(x,y)

另外,你可以在matlab里输入[1 2 3]>2,来看一下数组和单个数字比大小时,matlab是怎么处理的本回答被提问者采纳
第2个回答  2010-04-11
方法1
x=linspace(-10,10);
y=-(x<0)+(0<=x&x<=5).*(x.^2+3)+15*(x>5);
plot(x,y)

方法2
f=maple('x->piecewise(x<0,-1,0<=x and x<=5,x^2+3,x>5,15)');
x =linspace(-10,10);
plot(x,mfun(f,x))
相似回答