MATLAB 帮助中心
当您在用于代码生成的 MATLAB® 代码中使用函数句柄时,请遵循以下限制:
不要使用相同的变量引用不同函数句柄
在某些情况下,使用相同的变量引用不同函数句柄会导致编译时错误。例如,以下代码不执行编译:
function y = foo(p) x = @plus; if p x = @minus; end y = x(1, 2);
不要向 coder.ceval 传入函数句柄或从其传出函数句柄
coder.ceval
您不能向 coder.ceval (MATLAB Coder) 传入函数句柄,也不能从其传出函数句柄。例如,假设 f 和 str.f 是函数句柄:
f
str.f
f = @sin; str.x = pi; str.f = f;
以下语句将导致编译错误:
coder.ceval('foo', @sin); coder.ceval('foo', f); coder.ceval('foo', str);
不要将函数句柄与外部函数相关联
您不能创建引用 MATLAB 外部函数的函数句柄。
不要向外部函数传入函数句柄或从其传出函数句柄
您不能向 feval 和其他 MATLAB 外部函数传入,或从其传出函数句柄。
feval
不要向入口函数传入函数句柄或从其传出函数句柄
您不能向入口函数传入,也不能从其传出函数句柄。以如下函数为例:
function x = plotFcn(fhandle, data) assert(isa(fhandle,'function_handle') && isa(data,'double')); plot(data, fhandle(data)); x = fhandle(data);
在此示例中,函数 plotFcn 接收一个函数句柄及其数据作为输入。plotFcn 尝试使用输入 data 调用 fhandle 引用的函数,并绘制结果。但是,此代码会生成编译错误。该错误指示在 MATLAB 函数内执行调用以指定输入的属性时,函数 isa 不会将 'function_handle' 识别为类名。
plotFcn
data
fhandle
isa
'function_handle'
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
欧洲
亚太
联系您当地的办事处