在deff内编写分段函数

问题描述 投票:0回答:1

我正在使用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是一些浮点数。我在做什么错?

if-statement plot scilab piecewise
1个回答
0
投票

当输入是向量时,您不能按原样使用函数。可能的解决方法是使用feval

a = feval(q,f)

另一个(更好的解决方案是以矢量化方式编码f

function a = f(q)
     a = 1*(q >= -2 & q <= -1) - 1*(q >= 1 & q <= 2)
end

除非需要更改值,否则不需要1*

© www.soinside.com 2019 - 2024. All rights reserved.