大家好,又见面了,我是你们的朋友全栈君。
之前一直在用,也知道这么个东西,但是没怎么总结。感觉matlab函数句柄就是c语言里面的函数指针,在matlab里面叫它handle,句柄嘛,有了它就可以操纵这个对象(这里也可以叫做函数),这个概念其实可以推广到很多东西,图形fig,自定义函数句柄(也就是下面将会展示的),matlab自带函数句柄,以及某些函数返回的函数句柄,某些类对象或者表达式,也可以叫做句柄。
1、何为函数句柄?
函数句柄也是MATLAB中的一种常见的数据类型,
它的地位类似于其它计算机语言里的函数对象(Javascript,Python),函数指针(C ),或者函数引用(Perl)。
它的作用是将一个函数封装成一个变量,使其能够像其它变量一样在程序的不同部分传递。。引入函数句柄可使函数调用变得更加灵活方便,极大地提高了函数调用的速度和效率。MATLAB中函数句柄的使用使得函数也可以成为输入变量,并且能很方便地调用,提高函数的可用性和独立性。
2、函数句柄的创建:
方式①:直接加@
语法:@函数名fun1 = @sin;
方式②:str2func函数
语法:str2fun(‘函数名’)
fun2 = str2func(‘cos’);
方式③:str2func函数
语法:@(参数列表)单行表达式 fun3 = @(x, y)x.^2 y.^2;
3、函数句柄的调用:
假定一个函数的调用格式为:[y1,y2,…,yn] = FunctionName(x1,x2,…,xm)
该函数通过以下方式构建函数句柄:Hfunction = @FunctionName
则通过函数句柄实现函数运算的调用格式是:直接调用 Hfunction (x1,x2,…,xm) 或者 [y1,y2,…,yn]=feval (Hfunction,x1,x2,…,xm)
例如:
句柄是matlab语言独有的参数,相当于C语言的指针。 句柄分为多种,如函数柄,对象柄,图形柄等。 图形句柄就指一个图形,在生成图形时同时得到一代号,如语句 h=plot(x,y),h 就是一个图形句柄,在后来的某一个地方就可用h代表这个图,如 set(h,…),对这个图形进行再设置。 1.函数句柄 函数句柄简介:函数句柄(function handle)是MATLAB中的一类特殊的数据结构,它的地位类似于其它计算机语言里的函数对象(Javascript,Python),函数指针(C ),或者函数引用(Perl)。作用是将一个函数封装成一个变量,使其能够像其它变量一样在程序的不同部分传递。 句柄创建: (1)fun1=@sin; (2)fun2=str2fun(‘cos’); (3)匿名函数:fun3=@(x,y)x2 y2; 函数句柄应用:函数句柄作为函数参数;利用函数句柄绘图;利用函数句柄滤波等
比如定义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) 定义函数x2 y2 f2=@(t)(f1(t,2)) 定义函数t^2 4 f3=@(x)(f1(x(1),x(2))) 定义函数x(1)2 x(2)2 使用匿名函数定要注意函数本身参数形式 f1(2,3) 表示22 32 f2(3)=3 表示3^2 4 f3([1,2]) 表示12 22 说白函数指针
handle=@functionname 返指向制定MATLAB函数句柄 函数句柄指指向函数量句柄函数获函数句柄存
图形句柄和图形之间是一种一一对应关系,简单的说图形句柄就是指向了这个图形的一个变量,通过它可以设定该图形的各种属性。
matlab其实还有很多新颖奇妙的函数用法,给我们带来了很多便利,需要的时候多去查查就好了。
参考文献: https://www.cnblogs.com/shenxiaolin/p/9257608.html https://blog.csdn.net/algorithm_lixuan/article/details/75675176 https://jingyan.baidu.com/article/ed15cb1b58587c1be3698102.html https://blog.csdn.net/daaikuaichuan/article/details/77801780 https://www.cnblogs.com/weiweicf/p/5970497.html https://blog.csdn.net/daaikuaichuan/article/details/77801780 https://blog.csdn.net/yhl_leo/article/details/50699990 https://blog.csdn.net/lqzdreamer/article/details/70237495
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/160801.html原文链接:https://javaforall.cn