是否有充分的理由在 MATLAB 中使用内联函数和匿名函数之间进行选择?此处已提出并回答了这个确切的问题,但答案对 MATLAB 新手用户没有帮助,因为代码片段不完整,因此粘贴到 MATLAB 命令窗口时不会运行。有人可以提供可以粘贴到 MATLAB 中的代码片段的答案吗?
问问题
7102 次
2 回答
8
匿名函数取代了内联函数(如文档和您发布的链接中所述)
文档警告:
inline 将在未来的版本中删除。请改用匿名函数。
于 2013-08-15T13:10:02.557 回答
2
以下是我将如何以我自己的风格呈现Oleg 的答案:
案例 1 - 使用参数a
和参数定义匿名函数xin
a = 1;
y = @(x) x.^a;
xin = 5;
y(xin)
% ans =
% 5
案例 2 - 更改a
工作区中的参数以显示匿名函数使用的原始值a
a = 3;
y(xin)
% ans =
% 5
情况 3 - 如果内联函数和匿名函数包含在定义时未定义的参数,则它们都不能使用
clear all
y = @(x) x.^a;
xin = 5;
y(xin)
% ??? Undefined function or variable 'a'.
% Error in ==> @(x)x.^a
z = inline('x.^a','x');
z(xin)
% ??? Error using ==> inlineeval at 15
% Error in inline expression ==> x.^a
% ??? Error using ==> eval
% Undefined function or variable 'a'.
%
% Error in ==> inline.subsref at 27
% INLINE_OUT_ = inlineeval(INLINE_INPUTS_, INLINE_OBJ_.inputExpr, INLINE_OBJ_.expr);
a
案例 4 比较性能并作为变量传递。
clear all;
y = @(x,a) x.^a;
ain = 2;
xin = 5;
tic, y(xin, ain), toc
% ans =
% 25
% Elapsed time is 0.000089 seconds.
tic, z = inline('x.^a','x','a'), toc
z(xin, ain)
% z =
% Inline function:
% z(x,a) = x.^a
% Elapsed time is 0.007697 seconds.
% ans =
% 25
在性能方面,匿名>>内联。
于 2013-08-15T13:39:36.537 回答