matlab中符号‘@’有什么作用?尤其是函数引用中有什么用处?

作者&投稿:驷乔 (若有异议请与网页底部的电邮联系)
Matlab中的@什么意思~

@fun 为一个函数柄

我自己理解
@fun 可以理解为一个fun函数的指针
如果一个函数 比如quad(@fun,x0,x1)
(这个表示对fun函数从x0到x1积分)
把@fun相当于quad的一个参数传到quad中

网上资料:
一、函数句柄

所谓函数句柄,个人认为可以将其理解成一个函数的代号,就像一个人的名字。这样在调用时可以调用函数句柄而不用调用该函数。

变量不仅可以用来表示数值(如: 1, 0.2, -5), 用来表示字符串(如: 't', 'casino'), 也可以用来表示函数哦. 当然, 你也看到了前面我们提到的函数都是一个一个的文件, 直接塞到一个变量里面似乎太大, 不过我们可以'提纲挈领', 抓住函数的handle(句柄), 就可以.
将函数句柄赋值给变量要用到@符号, 语法: 变量名=@函数名, 此处地函数名可以是当前Matlab中可以使用的任意函数 例如: , 此后mysin就和sin同样地使用, mysin(pi)和sin(pi)的含义相同.

语法如下:

变量名= @ 函数名;

@的作用就是将一个函数的函数句柄赋值给等号左边的变量。在调用函数时就可以调用该句柄,可以实现同样的功能。

例:

首先我们写一个求均值的函数:

function y=average(x)
y=mymean(x);
function a=mymean(v)
a=sum(v)/length(v);

定义一个数组z:

z=[1,2,3,4,5,6,7];

>> average(z)

ans =

4

>>

handle =

@average

>>

ave =

@average

>> ave(z)

ans =

4





二、匿名函数

匿名函数是函数句柄的一种特殊用法,这里所得到的函数句柄变量不指向特定的函数(即不指向函数M文件中的函数名),而是指向一个函数表达式(具体表达式)。

语法如下:

变量名=@(输入参数列表)运算表达式;

例子:

为了说明问题,我们用简单的两个数相加,

>>

sum =

@(x,y)x+y

>> sum(2,3)

ans =

5

http://apps.hi.baidu.com/share/detail/42436785

比如定义f(x)=x^2,可以写为
f=@(x)(x.^2)
其中@(x)(x.^2)就是匿名函数,第一个括号里面是自变量,第二个括号里面是表达式,@是函数指针
f=@(x)(x.^2)表示将匿名函数@(x)(x.^2)赋值给f,于是f就表示该函数。
于是f(2)=2.^2=4;f(1:3)=[1:3].^2=[1 4 9]等等

定义匿名函数时也可以调用别的匿名函数,比如
f1=@(x,y)(x.^2+y.^2)
定义了函数x^2+y^2
f2=@(t)(f1(t,2))
定义了函数t^2+4
f3=@(x)(f1(x(1),x(2)))
定义了函数x(1)^2+x(2)^2
使用匿名函数时一定要注意函数本身的参数形式,如
f1(2,3)
表示2^2+3^2
f2(3)=3
表示3^2+4
f3([1,2])
表示1^2+2^2
说白了就是函数指针

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);
在这种长且多次调用的情况下,用函数句柄就可以方便很多。

在matlab中怎么输入特殊符号
答:把要设置成斜体的用大括号放在一起 注: 可用{}把须放在一起的括起来。二、特殊的数学符号 Matlab中下标,斜体,及希腊字母的使用方法:\approx ≈ \oplus ≡ \neq ≠ \leq ≤ \geq ≥ \pm ± \times × \div ÷ \int ∫ \exists ∝ \infty ...

matlab中表示“与”的逻辑符号是什么?
答:any和all函数在连接操作时很有用,设x是0-1向量,如果x中任意有一元素非零时,any(x)返回“1”,否则返回“0”;all(x)函数当x的所有元素非零时,返回“1”,否则也返回“0”.这些函数在if语句中经常被用到.如:if all(A<5)do something end 另外,还有"&&"和"||"运算符,Matlab中的...

matlab中符号"."有什么作用
答:例如[1 2 ;3 4].^2表示对每个元素平方,得到[1 4; 9 16]如果没有.则表示[1 2;3 4]与自己相乘,得到[7 10;15 22]在第一行中,“.”和“/”在一起,如果u是一个数(或者单元数组),则有无点都是一样的。如果u是数组,则表示x除以矩阵u,即x与u的逆矩阵相乘,这里的相乘是矩阵...

matlab中符号运算和数值运算的区别是什么?
答:两者的根本区别是 : 数值计算的表达式、矩阵变量中不允许有未定义的自由变量 , 而符号计算可以含有未定义的符号变量。对于一般的程序设计软件如 C, C + + 等语言实现数值计算还可以 , 但是实现符号计算并不是一件容易的事。而 Matlab 自带有符号工具箱 Symbolic Math Tooibox , 而且可以借助数学软件 ...

matlab 中在运算符号前加一点是什么意思?
答:表示矩阵相乘(矩阵的乘法).*表示各个元素分别相乘 a=[0 1;2 3];>> b=[3 2;0 1];>> c=a*b c = 0 1 6 7 c=[ 0*3+1*0 0*2+1*1 2*3+3*0 2*2+3*1]>> c=a.*b c = 0 2 0 3 c=[ 0*3 1*2 2*0 3*1]>> help Matrix multiply.X*...

matlab中共轭转置符的作用有哪些?
答:转置算符在matlab里是符号.',就是将矩阵的行列互换 b=a.'如果原来a是mxn的矩阵,b就是是nxm的矩阵,且b(j,i)=a(i,j), i=1,2,...m ,j=1,2,...n 而共轭转置在matlab里的符号是',这转置的基础上还要加上每个数取复共轭 一个数的复共轭就是实部不变,虚部取反 例如复数 1+i的...

matlab中a (:,:)是什么意思
答:MATLAB中A(:,1:2:3)表示取矩阵A的第1列和第3列的值。说明:A中逗号之前的:表示所有行,逗号之后的1:2:3表示列从1到3取值,步长为2,所以列能取到的值为1,3。MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数...

matlab 中.*和*有什么区别
答:2、在进行矩阵之间的运算时“.*”和“*”的意义就有所不同了。假设a,b表示两个矩阵,a*b表示矩阵a与矩阵b进行矩阵相乘,a.*b表示矩阵a中的元素与矩阵b中的元素按位置依次相乘,得到的结果将作为新矩阵中相同位置的元素。3、MATLAB 中用一个特殊的符号来区分矩阵运算和数组运算。在需要区分两者不...

MATLAB仿真中这个符号是什么?
答:切换开关。在1,2,3,x中切换。

matlab中sum((~image)')中 ' 表示什么意思
答:'是矩阵转置运算符,sum函数是按列求和,所以转置求和再转置就是按行求和。其实 Y_projection=(sum((~image)'))'这句可以写成 Y_projection=sum(~image,2)意思是一样的,按行求和