matlab 中@一个东东作甚

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函数也可以用来作为自定义:注意此处只能用两个变量

>> z = bsxfun(@(x,y)(x+y),1,3)

z =

     4

当然函数名也是matlab自带的,详情请看help bsxfun







猜你喜欢

转载自blog.csdn.net/qinze5857/article/details/78989528
今日推荐