我正在使用deff在Scilab中定义分段函数。我使用if-else语句以不同的时间间隔定义函数。除this one以外,其他所有功能似乎都可以使用。
这是我的方法:
deff('a=f(p)', ["if(q >= -2 & q <= -1) then"; "a=1"; "elseif(q >= 1 & q <= 2) then"; "a=-1"; "else"; "a=0"; "end";])
相同的方法在类似功能上起作用,例如this。
eff('a=f(p)', ["if((p > 0 & p <= 2)) then"; "a=p/2"; "else"; "a=0"; "end";])
我已将q
定义为:
q = -3:Ts:3;
其中Ts是一些浮点数。我在做什么错?
当输入是向量时,您不能按原样使用函数。可能的解决方法是使用feval
:
a = feval(q,f)
另一个(更好的解决方案是以矢量化方式编码f
:
function a = f(q)
a = 1*(q >= -2 & q <= -1) - 1*(q >= 1 & q <= 2)
end
除非需要更改值,否则不需要1*
。