【问题标题】:Use of % sign before a function name in scilab?在 scilab 中的函数名称前使用 % 符号?
【发布时间】:2017-06-22 06:24:34
【问题描述】:

谁能帮我理解这段 Scilab 的代码? 假设 flag = 'c', thres = 2 和 A 是某个矩阵。

deff("[flag]=%smallei(x)","flag=real(x) >= thres")
[X,dsmall] = schur(A,%smallei);

不过,我知道'deff' 被用来创建一个名为 %smallei 的函数,它正在比较值。但是在 Schur 函数中,使用 %smallei 时没有输入参数。请帮助我,这段代码 sn-p 在做什么以及我错在哪里。

完整的 Scilab 代码 - http://cgit.scilab.org/scilab/plain/scilab/modules/linear_algebra/macros/psmall.sci?h=5.1&id=b97dd3f34da8b52ac799da43848d8d0910d83aef

【问题讨论】:

    标签: scilab


    【解决方案1】:

    schur 函数在内部调用 %smallei 函数,因为您将指针传递给 schur 中的函数(请参阅@987654321 @)。 schur 函数通过向他传递一个参数(在您的示例中为“x”)并期望返回一个值(在您的示例中为“flag”)来调用此函数指针。因此,您可以使 schur 与任何遵循 %smallei 原型的函数一起工作。

    这是优化算法中的一种典型方法,其中您有一个可以与不同优化标准一起使用的通用算法。因此,您将算法拆分为通用代码和用于标准的特定函数,并且该函数在算法中作为函数指针调用。用户可以通过将优化函数作为函数指针注入来决定使用哪个自定义标准。

    【讨论】:

    • 是否也可以通过引用 Scilab 函数来传递变量,因为我已经问过here。如果你能帮助我解决这个问题,我将不胜感激。
    猜你喜欢
    • 2010-09-19
    • 2012-01-26
    • 2020-03-31
    • 2023-01-03
    • 1970-01-01
    • 2013-09-19
    • 1970-01-01
    相关资源
    最近更新 更多