@是个操作符,叫匿名函数操作符,这个符号很有用。
想详细了解这个,你在Command Window下输入 help @
就弹出很多的帮助资料,然后你点关于@的这行
punct - Function handle creation @
点开,有以下信息
@ At. The at symbol is used to create a function_handle.
It is also used at the beginning of directory names that contain
matlab object methods and the constructor for the object, e.g.
the directory @inline contains the constructor inline.m for the
inline object and all methods for inline objects.
所以你要去了解Function handle函数句柄。
于是你就help function_handle 注意有个下划线,简单地说函数句柄代表这个函数的名字,通过这个句柄你可以调用这个函数,让调用函数的操作异常简单,这个是MATLAB的神奇之处。我举个小例子,比如,在Command Window下输入以下
ezplot(@sin)
它就可以把sin函数画出来,可能现在你不是很理解这个,但你应该能体会到这个操作的强大。(你自己操作一遍就会有直观感受)
将函数句柄赋值给变量要用到@符号,
变量不仅可以用来表示数值(如: 1, 0.2, -5), 用来表示字符串(如: 't', 'casino'), 也可以用来表示函数哦. 当然, 你也看到了前面我们提到的函数都是一个一个的文件, 直接塞到一个变量里面似乎太大, 不过我们可以'提纲挈领', 抓住函数的handle(句柄), 就可以.
将函数句柄赋值给变量要用到@符号,
语法:变量名=@函数名,或者, handlef=str2func(变量名)
此处的函数名可以是当前Matlab中可以使用的任意函数 例如: mysin=@sin, 此后mysin就和sin同样地使用, mysin(pi)和sin(pi)的含义相同.
punct - Function handle creation @
@ 在匿名函数中表示函数句柄
例如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);
在这种长且多次调用的情况下,用函数句柄就可以方便很多。
函数句柄
匿名函数
这是函数句柄的一种高级用法, 这样产生的函数句柄变量不指向特定的函数, 而是一个函数表达式. 其语法:
变量名=@(输入参数列表)运算表达式
例如, 前面那个计算变量平方的函数可以简单地写为这个匿名函数:
mysqr1=@(x)x.*x
之后, 执行mysqr1(变量名), 即可计算该变量的平方, 注意, mysqr1属性是函数句柄变量, 而不是这个表达式; 还有要注意这个表达式不需要用单引号括起来