MatLab中的函数句柄转换为SciLab

时间:2017-03-10 02:01:10

标签: matlab scilab

我们有一些MatLab代码包含以下行:

fTE2D = @(x) (0.0049.*WP^2 + 2.4417.*WP).*((y^(2)+x^(2))^(1/2))^(-0.128.*log(WP) - 1.7855)-SecondD; 

我们想将其翻译成SciLab。在SciLab中找不到对function handle (Matlab @)的引用。

1 个答案:

答案 0 :(得分:1)

这个Matlab指令创建了一个"匿名" function并将其存储在fTE2D变量

在Scilab中,所有函数都是变量 你可以用

创建一个类似的功能
    function y=fTE2D(x)
      y= (0.0049.*WP^2 + 2.4417.*WP).*((y^(2)+x^(2))^(1/2))^(-0.128.*log(WP) - 1.7855)-SecondD; ;
    endfunction

然而有意义的差异

在Matlab WP中,ySeconD必须在匿名函数之前定义    已创建,其值存储在fTE2D变量中。 使用Scilab,WPySeconD值取自调用范围    当函数被调用时。

例如

使用Matlab

>> a=2
>> foo=@() sqrt(a)
>> foo()
    ans =
   1.4142
>> a=4
>> foo()
    ans =
   1.4142

与Scilab

--> function y=foo(),y=sqrt(a);endfunction
--> a=2;
--> foo()
ans =
    1.4142
--> a=4;
--> foo()
 ans =
    2