4.4 MATLAB学习笔记之程序设计-特殊形式的函数

特殊形式的函数

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

一、子函数

在 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

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

二、内联函数★★

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

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

>>a='(x+y)^2'; 
>>f=inline(a)
>>f(3,4) 
ans  =
	49
三、 匿名函数★★★

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

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

其中,

  • 函数句柄变量相当于函数的别名,利用它可以间接调用函数;

  • “@”是创建函数句柄的运算符;

  • “@”后面定义了一个匿名函数,包括函数输入参数和函数表达式;

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

    >>sqr=@(x)x.^2       	%定义匿名函数
    
    sqr =
    	@(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 =
  @sin 

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

匿名函数的执行效率要明显高于内联函数,在参数传递方面也要比内联函数方便、高效。

内联函数在将来的 MATLAB 版本中将被删除,取而代之的是匿名函数,内联函数能实现的, 匿名函数完全可以更好地实现,并且调用效率要比内联函数高得多。

Matlab学习笔记内容来源于《MATLAB程序设计与应用 第三版》刘卫国主编

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值