在scilab中使用函数名之前的%符号?

时间:2017-06-22 06:24:34

标签: scilab

任何人都可以帮我理解Scilab的这段代码吗? 假设flag =' c',thres = 2,A是某个矩阵。

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

尽管如此,我得到了那个' deff'用于创建名为%smallei的函数,并且它正在比较这些值。但是在Schur函数中,%smallei在没有输入参数的情况下使用。请帮助我,这段代码片段正在做什么以及我错在哪里。

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

1 个答案:

答案 0 :(得分:1)

schur 函数在内部调用%smallei 函数,因为您将指针传递给 schur 中的函数(请参阅{{ 3}})。 schur 函数通过向他传递一个参数(在您的示例中为' x')并期望返回一个值('标记'在您的示例中)来调用此函数指针)。因此,您可以使 schur 使用%smallei 原型之后的任何函数。

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