函数定义方法 1. 内联函数() 在命令窗口、程序或函数中创建局部函数时,可以使用构造函数。 优点是不必将其存储为单独的文件,同时可以像普通函数一样调用它。 应用中有几个限制:不能调用另一个函数、只能由一个表达式组成、只能返回一个变量。 显然,[u, v] 的形式是不允许的。 因此,它不能用于任何需要逻辑运算或乘法运算才能得到最终结果的情况。 尽管存在这些限制,但在许多情况下使用此功能还是非常方便的。 函数的一般形式为:('任何有效表达式','p1','p2',...),其中'p1','p2',...是出现在函数中的所有变量的名称表达。 ****************************************************** * * 示例1:求解F(x) x^2*cos(a*x)-b,a、b是标量; x 是一个向量。 在命令窗口中输入:Fofx('x.^2.*cos(a*x)-b','x','a','b'); g Fofx([pi/3pi/3.5],4,1) 系统输出为: g-1.5483 -1.7259 ******** ***************** **************************** 示例 2:fks ( 'sin(k*x).*x.^2','x ','k'); 我 1; 分叉 0:0.1:5 fk(i) 四边形(@(x)fks(x,k), 0,5); 我 i+1; 结束 k [0:0.1:5]; 情节(k,fk)******************************************** ********* 在线函数从字符串表达式创建函数,不能直接使用工作区变量,例如: a 2 ; f('a*x.^2','x'); 计算f(2)%时,会出现参数a无法识别的提示。
还可以创建多元函数,例如:f('x+y','x','y') 创建二元函数f(x,y) x+y,在工作区中输入f(2,3)计算 2 +3************************************************ *** ***** 2.匿名函数()变量不仅可以用来表示数值(如:1、0.2、-5),也可以用来表示字符串(如:'t'、' '),也可以表示 。 当然,你也看到了,我们前面提到的功能都是一一的文件。 它似乎太大了,无法将它们直接填充到变量中,但我们可以“概述”并获取函数的(句柄)。 要将函数句柄分配给变量,请使用@符号。 语法:变量名@函数名。 这里的函数名可以是任何当前可以使用的函数。 例如:mysin@sin。 从现在起,mysin 将与 sin 一样使用,mysin( pi) 和 sin(pi) 具有相同的含义。 匿名函数()是7.0版本中提出的一种新的函数描述形式。 与内联函数类似,它允许用户编写简单的函数,而无需创建M文件。 因此,匿名函数具有函数的所有优点,比函数更高效,并且还具有一些独特的功能。
定义匿名函数非常简单。 语法为:@() 其中是调用该函数的函数句柄(),相当于C语言中的函数指针。 是参数列表。 多个参数之间用逗号分隔,即为函数的表达式。 模式。 ****************************************** 示例 1:f @(x)x.^ 2; % 定义函数 f(x) x^2 f(2)% 来计算 x 2 处的 f(x) 值。 ********************** ***************** 匿名函数可以使用工作区变量,例如创建 f(x,y) x^2+y^3 示例 2: p 2;q 3; %在工作空间中定义参数f @(x,y)x^p+y^q %定义函数f(2 ,3)%计算f(2,3)的值。 ans 31 如果修改p或q的值,例如将q改为2,计算结果不会改变。 这是因为函数句柄保存了函数创建时的快照,而不是动态访问其中的变量。 如果想要获取新值,则需要在更改参数值后重新创建函数。 ************************************** 内置函数也可以创建匿名函数或 M 文件 函数创建示例3: f @sin %f(x) sin(x) f(pi/2) %sin(pi/2) (f) % 可以查看函数信息********* *** ************************** 您可以使用单位数组为多个函数创建句柄。 例4: f {@sin @cos} f{1 }(pi/2)% 计算 sin(pi/2) f{2}(pi)% 计算 cos(pi) ********** ************** ********************** 函数句柄的另一个重要特性是它们可用于表示子函数、私有函数和嵌套函数。
如第1节示例2。通过向多元函数传递参数,完成对多元函数的调用。 7 以后建议用匿名函数替换在线函数! ! ! 创建匿名函数时,会记录有关该函数的信息。 当使用句柄调用函数时,不再进行搜索,而是立即执行函数,大大提高了效率。 它可以提高运行速度。 因为每次调用函数都需要搜索所有路径,我们可以看到路径有很多,所以如果你的程序中需要频繁使用某个函数,使用函数句柄来速度会得到提高。 函数通常被翻译为内联函数,适合函数体为表达式的情况,可以避免定义M文件函数的麻烦。 此语法功能是在早期版本中引入的。 从7.0(R14)开始,引入了一种新的形式——匿名函数()。 这种形式更加简洁有力。 因此,其使用在后续版本中逐渐被取代。 从2013a开始,建议使用匿名函数替换,并声明以后可能会停止支持。 与匿名函数相比,最大的优点是可以直接使用工作区中的变量,例如:1 a 1;b 2; 2 f @(x)a*x+b; 这种情况如果使用起来会比较麻烦。 需要将变量a和b转换为字符串,比较麻烦并且可能会导致精度损失。 一般写成这样:1 a 1;b 2; 2 f([(a)'*x+'(b)],'x'); 了解了以上情况后,相信提问者应该知道提示是什么意思了。 至于是使用在线函数还是匿名函数定义,可以根据自己的情况选择:如果只是临时代码,用什么都无所谓;如果只是临时代码,用什么都无所谓; 如果您认为该代码可能会在早期版本中使用,那么您只能使用它; 如果您担心代码质量要求,那么最好使用匿名函数。