MATLAB特殊形式的函数

目录

1.子函数

2.内联函数

3.匿名函数



除了通过函数文件定义一个函数,MATLAB还可以使用子函数内联函数匿名(句柄)函数定义函数。 

1.子函数

在MATLAB函数定义中,如果函数较长,那么自然的我们希望将多个函数分别写在不同的函数文件中;有时候函数可能较短,那么我们又希望将多个函数定义放在同一个函数文件中。

在MATLAB中,可以在一个函数文件中同时定义多个函数,其中函数文件中出现的第一个函数称为主函数(Primary Function),其他函数称为子函数(Subfunction)。

但需要注意的是子函数只能由同一个函数文件中的函数调用,在保存函数文件时,函数文件名一般与主函数名相同,外部程序只能对主函数进行调用。

例:编写程序表示运算x*y+z,

 程序如下:建立func.m文件

function d=func(a,b,c)  %主函数
d=subfunc(a,b)+c;
function c=subfunc(a,b)  %子函数,此c非彼c,这里的c是形式输出变量
c=a*b;

运行如下:

>> func(3,4,5)

ans =

    17

 我们可以用子函数拆分表示更多更加复杂的函数,这能很大程度提高了我们的效率。我们在这指出:同一个函数文件中主函数和子函数的工作区是彼此独立的,各个函数间的信息传递可以通过输入输出参数、全局变量来实现。

2.内联函数

 以字符串形式存在的函数表达式可以通过inline函数转化为内联函数。

例:a='(x+y)^2',可以通过f=inline(a)生成内联函数f(x,y)=(x+y)^2

>> a='(x+y)^2';
>> f=inline(a)

f =

     内联函数:
     f(x,y) = (x+y)^2

运行如下

>> f(4,5)

ans =

    81

3.匿名函数

匿名函数的基本格式如下:

函数句柄变量=@(匿名函数输入参数) 匿名函数表达式

这里,函数句柄变量相当于函数的别名,利用它可以间接调用函数;“@”是创建函数句柄的运算符;”@“后面定义一个匿名函数,包括函数输入参数和函数表达式;

>> sqr=@(x) x.^2

sqr = 

    @(x)x.^2

>> sqr([2,3,4])

ans =

     4     9    16

 当函数有多个输入参数时,参数间用逗号分隔。

>> f=@(x,y) x^2+y^2;
>> f(4,5)

ans =

    41

也可以通过函数句柄调用已经定义的函数

函数句柄变量=@函数名

 例1

>> k=@func

k = 

    @func

>> k(1,2,3)

ans =

     5

例2

>> h=@sin    %取正弦函数句柄

h = 

    @sin

>> h(pi)

ans =

   1.2246e-16

>> h(pi/2)      %通过函数句柄变量h调用正弦函数

ans =

     1

 

posted @   morphism  阅读(162)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示