首页 > 编程知识 正文

matlab多变量函数的函数句柄,matlab子函数

时间:2023-05-05 14:35:21 阅读:194175 作者:2981

匿名函数可以使用工作空间的变量例如创建函数f(x,y)=x^2+y^3 >> p=2; >> q=3; >> f=@(x,y) x^p+y^q f = @(x,y)x^p+y^q 计算f(2,3) >> f(2,3) ans = 31 如果修改p或者q的值例如将q改为2 q = 2 >> f(2,3) ans = 31 计算结果并没有改变,这是因为该函数句柄保存的是函数在创建时的快照,而不是动态的访问其中的变量,如果希望获取新值。需要重新创建一次该函数,完整的方法应该是这样的: >> q=2; >> f=@(x,y) x^p+y^q f = @(x,y)x^p+y^q >> f(2,3) ans = 13 由上面可知,要创建一个内置函数或一个M文件函数的句柄也很容易,只要在等号右边使用@符号,并在该符号后紧跟内置函数名或M文件函数名即可。 Matlab还专门提供了一些函数来处理和应用句柄。例如,函数functions将返回一个句柄的详细信息,whos显示句柄储存空间等(工作空间信息)。 fuctions函数通常只在调试程序时使用,因为它的返回值很容易发生变化。 函数句柄 主要内容 函数类型(MATLAB) 函数句柄介绍 函数句柄举例 1 3 2 一.函数类型介绍 MATLAB函数的类型 有主函数、子函数、嵌套函数、私用函数和匿名函数等 主函数 任意m文件中的第一个函数称呼为主函数。主函数之后可能附随多个子函数。主函数是在命令区或其它函数中可调用的唯一一个该m文件中所定义的函数。 子函数 一个m文件中可能包含多个函数。主函数之外的函数都称为子函数这些子函数只能为主函数或同一m文件中的其它子函数可见。 而即便在相同m文件中,子函数内定义的变量也不可为其它子函数所使用除非定义为全局或作为参数传递。 举例(求2*X^2+3*X-7=0的根) function [x,y]=equal(a,b,c)%主函数 d=b.^2-4*a*c;%子函数 x=(-b+sqrt(d))./(2*a); y=(-b-sqrt(d))./(2*a); >> [r1 r2]=equal(2,3,-7) r1 = 1.2656 r2 = -2.7656 嵌套函数 任一m函数体内所定义的函数称为外部函数的嵌套函数。matlab支持多重嵌套函数 即在嵌套函数内部继续定义下一层的嵌套函数。 例: function x = nestFun(p1, p2) X1=nestFun(p2); function y = nestFunIn(p3)%嵌套函数 y=2*p3; end x=x1+p1; end Matlab函数体通常不需end结束标记,但如包含嵌套函数,则该m文件内的所有函数(主函数和子函数)不论是否包含嵌套函数都需显式end标记。 嵌套函数的调用规则1.父级函数可调用下一层嵌套函数。2.相同父级的同级嵌套函数可相互调用。3.处于低层的嵌套函数可调用任意父级函数。 私有函数 私有函数仅对满足条件的特定函数开放。私有函数存放于名为private的子目录下,访问条件是存放于该private子目录的上一层父目录中的m文件函数 从存放于该private子目录上一层父目录中的m文件函数中发起调用的m脚本。 内联函数(inline)函数是MATLAB 7以前经常使用的一种构造函数对象的方法。在命令窗口、程序或函数中创建局部函数时,通过使用inline构造函数而不用将其储存为一个M文件,同时又可以像使用一般函数那样调用它。 MATLAB中的内联函数借鉴了C语言中的内联函数,现在应用较少。 匿名函数 匿名函数(anonymous function)是MATLAB 7.0版提出的一种全新的函数描述形式和内联函数类似可以让用户编写简单的函数而不需要创建M文件。 相当于C语言中的函数指针(入口地址)只不过句柄就用一个唯一的常整数来指出 。匿名函数是函数句柄的一种特殊用法这里所得到的函数句柄变量不指向特定的函数即不指向函数M文件中的函数名而是指向一个函数表达式(具体表达式)。 定义一个匿名函数很简单语法是fhandle=@(arglist) expression 变量名=@(输入参

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。