将Matlab匿名函数转换为Scilab内联函数

4
我的大多数Matlab函数都可以使用mfile2sci函数转换为Scilab函数,但有些函数包含匿名函数(例如f=@(x,y)sin(x)+log(y))。是否有一种方法将匿名函数转换为Scilab内联函数(例如,对于上面的例子deff('[z]=f(x,y)','z=sin(x)+log(y)')),以便我不必更改我的Matlab函数?

Scilab现在有一个regexp函数。我想知道是否可能将该模式提取出来。类似于validMatlabFunctionNanme\s?=\s?@(someText) MathematicalExpression... - Foad S. Farimani
1个回答

1

是的,目前状态下Matlab到Scilab的翻译器mfile2sci无法翻译匿名函数,但是通过以下补丁可以改善这种行为:

https://codereview.scilab.org/#/c/20916/

然而,需要注意的是,当使用“求解器”(如fsolveoptim、ode求解器(例如ode45ode15s等)时,匿名函数大多数情况下会发生。这些语句永远不会被转换为有效的Scilab语句(会给出警告)。


非常感谢。您能分享一下您在这里使用的正则表达式吗? - Foad S. Farimani
1
是的,您可以在已修补文件的代码中找到,网址为https://codereview.scilab.org/#/c/20916/2/scilab/modules/m2sci/macros/kernel/m2sci_syntax.sci。 - Stéphane Mottelet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接