@ 在匿名函数中表示函数句柄
例如ln(x),在matlab中是没有定义的,正确表示是log(x);
但如果要直观表示自然对数,意义用以下语句表示:
ln=@(x) log(x);
执行后,ln(4)=log(4) , 即用ln 替换 log。
以上表示可能无法看出‘@’的好处,再看下例:
poly6 = @(x) 8*x.^6+6*x.^5+3*x.^3+x.^2+x+520;
fplot(ploy6,[0,100]);
fzero(ploy6,13);
在这种长且多次调用的情况下,用函数句柄就可以方便很多。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@是用于定义函数句柄的操作符。函数句柄既是一种变量,可以用于传参和赋值;也是可以当做函数名一样使用。
举例:
sin是matlab中的一个函数,但sin只是函数名,还不是函数句柄,不可以用于传参。
f = @sin;
这行代码定义了一个函数句柄,变量名是f。这样就可以当做参数传递了(这就是上面代码中的意义所在),而且还可以跟sin函数按相同的语法规则使用:
g = f; % g也是函数句柄,其“值”和f一样,都代表sin函数
y = g(pi); %可以得到y=0
有例子如下图:
另外有一种用法:
语法: 变量名=@(输入参数列表)运算表达式
这样产生的函数句柄变量不指向特定的函数, 而是一个函数表达式
例如:
plot
fplot
请发表评论