MATLAB函数句柄

MATLAB函数句柄之前一直在用,也知道这么个东西,但是没怎么总结。感觉matlab函数句柄就是c语言里面的函数指针,在matlab里面叫它handle,句柄嘛,有了它就可以操纵这个对象(这里也可以叫做函数),这个概念其实可以推广到很多东西,图形fig,自定义函数句柄(也就是下面将会展示的),matlab自带函数句柄,以及某些函数返回的函数句柄,某些类对象或者表达式,也可以叫做句柄。1、何为函数句柄?函数句柄…

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

之前一直在用,也知道这么个东西,但是没怎么总结。感觉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.net/160801.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • centos7 源码编译安装php7,报错make: *** 没有指明目标并且找不到 makefile。 停止。「建议收藏」

    centos7 源码编译安装php7,报错make: *** 没有指明目标并且找不到 makefile。 停止。

    2022年2月20日
    52
  • JVM内存逃逸[通俗易懂]

    JVM内存逃逸[通俗易懂]JVM内存逃逸第一次听到JVM内存逃逸的名词时还是很懵逼的,于是赶紧各种查资料,终于搞懂了这个地方。JVM的内存分配主要在是运行时数据区(RuntimeDataAreas),而运行时数据区又分为了:方法区,堆区,PC寄存器,Java虚拟机栈(就是栈区,官方文档还是叫Java虚拟机栈),本地方法区,而内存逃逸主要是对象的动态作用域的改变而引起的,故而内存逃逸的分析就是分析对象的动态作…

    2022年5月30日
    25
  • Tomcat安装及配置[通俗易懂]

    Tomcat安装及配置[通俗易懂]Tomcat安装及配置简述:在window10系统上安装及配置Tomcat9.0.x

    2022年6月9日
    19
  • 【181212】VC++超市进销存管理系统(Access)源代码

    【181212】VC++超市进销存管理系统(Access)源代码源码下载简介一个相当不错的VC++毕业设计作品,一个超市进销存管理系统,不但界面专业,而且功能也丝毫不落后,编译后运行如上图示。这个进销存系统使用Access作为数据库,系统可完成基础资料维护、销售管理、库存管理、帐务管理、数据管理、辅助工具等,并以系统流程图的方式显示示意图,更直观、更有利于对软件的操作。源码下载地址:点击下载备用下载地址:点击下载…

    2022年5月29日
    35
  • 【Java】输入—Scanner用法(全)[通俗易懂]

    【Java】输入—Scanner用法(全)[通俗易懂]Scanner用法目录1、输入整数、字符串数组2、输入二维数组3、输入字符串4、输入字符串分割为数组5、连续输入数字和字符串6、换行输入数字和字符串7、换行输入数字和字符串(需要包含空格)1、输入整数、字符串数组第一行输入n,m第二行输入n个整数第三行输入m个字符串//导入包importjava.util.Scanner;import…

    2022年7月16日
    9
  • Python 递归函数

    Python 递归函数递归函数在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。递归函数特性:必须有一个明确的结束条件; 每次进入更深一层递归时,问题规模相比上次递归都应有所减少 相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出就作为后一次的输入)。 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实…

    2022年6月29日
    22

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号