【问题标题】:Writing a piecewise function inside deff在 def 中编写分段函数
【发布时间】:2019-11-03 22:17:39
【问题描述】:

我正在使用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】:

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

a = feval(q,f)

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

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

1* 不是必需的,除非您需要更改值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多