在 scilab 中的函数名前使用 % 符号?
Use of % sign before a function name in 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
schur 函数在内部调用 %smallei 函数,因为您将指针传递给 中的函数schur(参见 help)。 schur 函数通过向他传递一个参数(在您的示例中为 'x' )并期望 return 一个值(在您的示例中为 'flag' 来调用此函数指针例子)。因此,您可以使 schur 使用任何遵循 %smallei 原型的函数。
这是优化算法中的一种典型方法,其中您有一个通用算法,可用于不同的优化标准。因此,您将算法拆分为通用代码和用于标准的特定函数,并且该函数在算法中作为函数指针被调用。用户可以通过将优化函数作为函数指针注入来决定使用哪个自定义标准。
任何人都可以帮助我理解 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
schur 函数在内部调用 %smallei 函数,因为您将指针传递给 中的函数schur(参见 help)。 schur 函数通过向他传递一个参数(在您的示例中为 'x' )并期望 return 一个值(在您的示例中为 'flag' 来调用此函数指针例子)。因此,您可以使 schur 使用任何遵循 %smallei 原型的函数。
这是优化算法中的一种典型方法,其中您有一个通用算法,可用于不同的优化标准。因此,您将算法拆分为通用代码和用于标准的特定函数,并且该函数在算法中作为函数指针被调用。用户可以通过将优化函数作为函数指针注入来决定使用哪个自定义标准。