想用MATLAB写一个分段函数,总是出问题,跪求高手指点

>> syms x
>> y=exp(x^2).*(0<=x<=2)+80/(4-sin(16*pi*x)).*(2<x<=4)
??? Error using ==> sym.le at 11
Function 'le' is not implemented for MuPAD symbolic objects.
是哪里出的问题呢?
也用if语句写了下,还是这样的
>> syms x
>> if 0<=x<=2
y=exp(x^2)
elseif 2<x<=4
y=80/(4-sin(16*pi*x))
end
??? Error using ==> sym.le at 11
Function 'le' is not implemented for MuPAD symbolic objects.

用句柄函数吧,sym里面是不允许大于等于之类的符号的。

>> y = @(x) exp(x^2)*(0<=x && x<=2) + (2<x && x<=4)*80/(4-sin(16*pi*x));
>> y(4)

ans =

20.0000

>> y(1)

ans =

2.7183

>> y(2)

ans =

54.5982

如果你输入的x,是一个向量的话,注意将y表达式里面的 * 和 / 前面加一个点。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-10-21
用句柄函数吧,sym里面是不允许大于等于之类的符号的。
>>
y
=
@(x)
exp(x^2)*(0<=x
&&
x<=2)
+
(2<x
&&
x<=4)*80/(4-sin(16*pi*x));
>>
y(4)
ans
=
20.0000
>>
y(1)
ans
=
2.7183
>>
y(2)
ans
=
54.5982
如果你输入的x,是一个向量的话,注意将y表达式里面的
*

/
前面加一个点。
相似回答
大家正在搜