如何在 Scilab 中使用 Octave/Matlab 内联函数

How to use Octave/Matlab Inline function in Scilab

如何在 Scilab 中使用这个 Octave/Matlab 内联函数?

u = inline('t>=0') where t=0:0.001:1.
y = (u(t-0.2)-u(t-0.3)) 

我在 Scilab 中试过

deff('[u]=f(t)','u=(t>=0)')

但是我在确定 'y' 时收到一个错误 "invalid index"。

与在 Matlab 中不同,调用 (t>=0) 会给你一个布尔向量,它的条目是 True 或 False。由于您需要 1 和 0,因此需要 bool2s 将布尔值转换为整数:

deff('[u]=f(t)','u=bool2s(t>=0)')

之后您可以像调用任何其他函数一样调用该函数:

t = 0:0.001:1
y = u(t-0.2)-u(t-0.3)
plot(t,y)

就我个人而言,我从未发现 Scilab 中需要内联函数。如果我写上面的代码,我会正常声明函数:

function y = u(t)
    y = bool2s(t>=0)
endfunction

与 Matlab 不同,Scilab 允许您在脚本中的任何位置显示此类函数。