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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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 使用函数处理程序作为参数定义函数_Matlab_Function Handle - Fatal编程技术网

Matlab 使用函数处理程序作为参数定义函数

Matlab 使用函数处理程序作为参数定义函数,matlab,function-handle,Matlab,Function Handle,是否可以在Matlab中将函数处理程序定义为参数 我试过了 function x = name(@f,gh) 但我收到一条错误消息,指出“@”处的语法无效。您不能在函数定义中使用涉及@的语法。匿名函数句柄将完成以下工作: function x = SO_Example(h,gh) x = h(gh); 您可以按如下方式调用该函数: SO_Example(@(a)a.^2 , 2) ans = 4 或者像这样: h = @(a)a.^2; SO_Example(h,2) ans = 4

是否可以在Matlab中将函数处理程序定义为参数

我试过了

function x = name(@f,gh)

但我收到一条错误消息,指出“@”处的语法无效。

您不能在函数定义中使用涉及
@
的语法。匿名函数句柄将完成以下工作:

function x = SO_Example(h,gh)
x = h(gh);
您可以按如下方式调用该函数:

SO_Example(@(a)a.^2 , 2)
ans = 4
或者像这样:

h = @(a)a.^2;
SO_Example(h,2)

ans = 4

请参阅注释以获取更多解释

您不能在函数定义中使用涉及
@
的语法。匿名函数句柄将完成以下工作:

function x = SO_Example(h,gh)
x = h(gh);
您可以按如下方式调用该函数:

SO_Example(@(a)a.^2 , 2)
ans = 4
或者像这样:

h = @(a)a.^2;
SO_Example(h,2)

ans = 4

请参见注释以获取更多解释

为了澄清,您可以添加一个解释,即参数解析器将尝试解析“@()…某物”,而不是将函数句柄传递给函数体。@CarlWitthoft对于理解Matlab背后的机制来说,这是一个很好的观点。但是,除此之外,传递
@(…)
还有什么意义?参数是在函数执行之前不知道的东西。我认为OP只是想告诉Matlab其中一个参数是函数。为了澄清这一点,您可以添加一个解释,即参数解析器将尝试解析“@()…某物”,而不是将函数句柄传递给函数体。@CarlWitthoft对于理解Matlab背后的机制有很好的意义。但是,除此之外,传递
@(…)
还有什么意义?参数是在函数执行之前不知道的东西。我认为OP只是想告诉Matlab,其中一个参数是一个函数。