我们有一些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 @)
的引用。
答案 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
中,y
和SeconD
必须在匿名函数之前定义
已创建,其值存储在fTE2D
变量中。
使用Scilab,WP
,y
和SeconD
值取自调用范围
当函数被调用时。
例如
使用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