Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 带feval的匿名函数的使用_Matlab_Anonymous Function - Fatal编程技术网

Matlab 带feval的匿名函数的使用

Matlab 带feval的匿名函数的使用,matlab,anonymous-function,Matlab,Anonymous Function,我不理解以下代码中的匿名函数: x = 0.25 * randn(3, 1); y = 0.25 * randn(3, 1); h = 0.1*randn(3, 1); interpolate = @(x, y, h, x_new, y_new) ... feval(@(int) int(x_new, y_new), ... TriScatteredInterp([-1; -1; 1; 1; x], ...

我不理解以下代码中的匿名函数:

x = 0.25 * randn(3, 1);
y = 0.25 * randn(3, 1);
h = 0.1*randn(3, 1);

interpolate = @(x, y, h, x_new, y_new) ...
    feval(@(int) int(x_new, y_new), ...
          TriScatteredInterp([-1; -1; 1; 1; x], ...
                             [-1; 1; -1; 1; y], ...
                             [0; 0; 0; 0; h]));
我对匿名函数和
feval
函数有一些了解,但我搜索了matlab文档,没有找到使用几个@符号的示例。
feval
参数还具有匿名功能


有人能给出一些提示吗?

所以您可能已经知道这是在创建一个带有句柄的匿名函数
interpolate

interpolate=@(x,y,h,x_new,y_new).

interpolate
接受这五个输入,并调用
feval
。现在它变得有点棘手,因为
feval
本身包含另一个匿名函数

@(int)int(x_new,y_new)
,表示输入
int
,并返回
int(x_new,y_new)
的输出。
feval
的附加输入(在本例中为
TriScatteredInterp
)被作为该匿名函数的输入。这不是对内置函数
int
的引用(如果您看到某个函数开始
feval(@int..
),可能就是这种情况)

因此,
interpolate
的作用基本上等同于对任何给定的输入集执行此操作:

tsi =  TriScatteredInterp([-1; -1; 1; 1; x], ...
                             [-1; 1; -1; 1; y], ...
                             [0; 0; 0; 0; h]));

tsi(x_new,y_new)

你可以通过比较
tsi(x_new,y_new)
的输出和
interpolate(x,y,h,x_new,y_new)
的输出来测试这一点。你读过了吗?我不太清楚feval使用@function作为参数@(int)int(x_new,y_new)部分,我仍然有点困惑。我看到了匿名函数doc,看到了这种样式“sqr=@(x)x.^2;”,所以这里的@(int)int(x_new,y_new),第一个“int”应该是一个参数,后一个“int”应该是某种类型的操作。但很明显,它不是。情况如何?两个
int
引用是相同的。正在执行的操作返回
int(x_new,y_new)
,对于任何
int
int
可以是一个2D矩阵,一个包含两个值的函数,等等)。匿名函数是这样灵活的。如果你写
f=@(x)x(5)
,那么
f(@ones)
f(y)
都可以工作。首先调用函数
ones(5)
,第二个返回变量
y
的第五个值。我有一个问题,TriscatedInterp的效果如何?TriscatedInterp如何在“(x,y)到h”规则上设置函数规则?这里。