前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MATLAB函数句柄

MATLAB函数句柄

作者头像
全栈程序员站长
发布2022-09-13 14:18:24
7540
发布2022-09-13 14:18:24
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

之前一直在用,也知道这么个东西,但是没怎么总结。感觉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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档