MATLAB程序设计与应用 4.4 特殊形式的函数

MATLAB程序设计与应用

4. 第4章 MATLAB程序流程控制

4.4 特殊形式的函数

除了最常用的通过函数文件定义一个函数,MATLAB还可以使用子函数
此外还可以通过内联函数和匿名函数自定义函数

4.4.1 子函数

在 MATLAB 的函数定义中,如果函数较长,往往可以将多个函数分别写在不同的函数文件中,但有时函数可能很短,可能希望将多个函数定义放在同一个函数文件中,这就存在子函数的定义问题。

在 MATLAB 中,可以在一个函数文件中同时定义多个函数,其中函数文件中出现的第一个函数称为主函数(Primary Function),其他函数称为子函数(Subfunction),但需要注意的是子函数只能由同一函数文件中的函数调用。在保存函数文件时,函数文件名一般和主函数名相同,外部程序只能对主函数进行调用。例如建立func.m文件,程序如下:

function d = func(a , b , c)  % 主函数  
d = subfunc(a , b) + c;
function c = subfunc(a , b)   % 子函数
c = a * b;	

命令行调用

>> func(3,4,5)

ans =

    17

注意:同一函数文件中主函数和子函数的工作区是彼此独立的,各个函数间的信息传递可以通过输入输出参数、全局变量来实现。

4.4.2 内联函数

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

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

f =

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

>> f(3,4)

ans =

    49
4.4.3 匿名函数

匿名函数的基本格式:

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

其中,函数句柄变量相当于函数的别名,利用它可以间接调用函数:“@”是创建函数句柄的运算符;“@”后面定义了一个匿名函数包括函数输入参数和函数表达式;函数有多个输入参数时,参数间用逗号分隔。

>> sqr = @(x) x.^2 %定义匿名函数

sqr =

  包含以下值的 function_handle:

    @(x)x.^2

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

ans =

     1     4     9

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

ans =

    25

也可以通过下列语句给已存在的函数定义函数句柄,并利用函数句柄来调用函数

函数句柄变量 = @函数

其中,函数名可以是 MATLAB提供的内部函数,也可以是用户定义的函数文件

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

h =

  包含以下值的 function_handle:

    @sin

>> h(pi / 2)

ans =

     1

匿名函数的执行效率要明显高于内联函数,在参数传递方面也要比内联函数方便、高效。内联函数在将来的 MATLAB版本中将被删除,取而代之的是匿名函数,内联函数能实现的,匿名函数完全可以更好地实现,并且调用效率要比内联函数高得多。

相关文章

显卡天梯图2024最新版,显卡是电脑进行图形处理的重要设备,...
初始化电脑时出现问题怎么办,可以使用win系统的安装介质,连...
todesk远程开机怎么设置,两台电脑要在同一局域网内,然后需...
油猴谷歌插件怎么安装,可以通过谷歌应用商店进行安装,需要...
虚拟内存这个名词想必很多人都听说过,我们在使用电脑的时候...