matlab中@是用于定义函数句柄的操作符
下面介绍两种常用的用法
1.函数句柄既是一种变量,可以用于传参和赋值
比如说 变量名=@+一个函数名
f=@sin%那么它就可以传参,用法和sin函数一样,把它当作函数名使用
2、语法: 变量名=@(输入参数列表)运算表达式
这样,变量名就可以当作函数名来使用,用来传参
比如f=@(x)sin(x)
怎么样使我们的matlab程序写的更有比格
比如
roadmap = PRM (@()(RandomSampleSixLink(obstacle)), @DistSixLink, @(x,y)(LocalPlannerSixLink(x,y,obstacle)), nsamples, neighbors);
(这么多@,是不是喜欢人家,才艾特他。)
例如第二个@DistSixLink的函数为function out = DistSixLink (x1, x2)而在function roadmap = PRM (RandomSample, Dist, LocalPlanner, nsamples, k)中第三个为Dist变量名里面调用为distances = Dist(x, samples(:,1:(i-1)));
由此我们明白了,这就是典型的一个使用@达到函数调用的功能,在函数调用中@+函数名,然后在PRM函数里传入的变量名字就可以调用这个函数。
@ALL当中最受欢迎的是matlab自带函数bsxfun(@+内置函数,变量1,变量2)
比如
还有其他内置函数,相减@minus、取余mod/rem(x,y同号时结果一样,异号时rem随x,mod随y),斜率@atan2等
需要补充的是bxsfun函数也可以用来作为自定义:注意此处只能用两个变量
当然函数名也是matlab自带的,详情请看help bsxfun