匿名函数可以直接得到函数句柄,而function定义的函数需要使用@运算符得到函数句柄。
示例一:
% Matlab
f = @(x)(exp(-0.2*x).*sin(x+2)-0.1);
fplot(f,[0 10]);
x1 = fzero(f,1);
x2 = fzero(f,4);
x3 = fzero(f,7);
%% New version
fplot(@f,[0 10]);
x1 = fzero(@f,1);
x2 = fzero(@f,4);
x3 = fzero(@f,7);
% function define
function y = f(x)
y = (exp(-0.2*x).*sin(x+2)-0.1);
end
示例二:
% Matlab
%% Test 1
integral(@sin,0,pi)
%% Test 2
integral(@(x) 1./x,2,5)
很多小伙伴可能会问第二个示例和function定义的函数没啥关系啊!其实不然,sin其实就是matlab内嵌的function函数。
很多matlab函数都要求给定函数句柄,而不是函数的定义,所以在使用function定义函数体时记住使用@运算符+函数名返回函数句柄。