第
第
二
二
讲
讲
MATLAB
MATLAB
的
的
2.1 脚本文件和函数文件
2.2 函数调用和参数传递
2.3 MATLAB的程序结构和控制流
2.4 M文件的调试
2.5 程序设计实例
2.5.1 音频信号的分析与合成
2.5.2 音频频谱分析仪
2.5.3 幅度调制
程
程
序
序
设
设
计
计
1
2
2
.
.
1
1
脚
脚
本
本
文
文
件
件
和
和
函
函
数
数
文
文
件
件
2.1.1 M脚本文件
对于一些比较简单的问题 ,在指令窗中直接输入指令计算
。
对于复杂计算,采用脚本文件(Script file)最为合适 。
MATLAB只是按文件所写的指令执行 。
M脚本文件的特点是:
• 脚本文件的构成比较简单,只是一串按用户意图排列而成的
(包括控制流向指令在内的)MATLAB指令集合。
• 脚本文件运行后 ,所产生的所有变量都驻留在 MATLAB
基本工作空间(Base workspace)中。只要用户不使用清除
指令(clear), MATLAB指令窗不关闭,这些变量将一直
保存在基本工作空间中。
M文件有两种形式 :脚本文件(Script File)和函数文件(
Function File )。这两种文件的扩展名,均为“ . m” 。
2
2
2
.
.
1
1
脚
脚
本
本
文
文
件
件
和
和
函
函
数
数
文
文
件
件
(
(
续
续
1
1
)
)
2.1.2 M函数文件
与脚本文件不同 ,函数文件犹如一个“黑箱”,把一些数据送
进并经加工处理,再把结果送出来。
MATLAB提供的函数指令大部分都是由函数文件定义的。
M函数文件的特点是
:
• 从形式上看 ,与脚本文件不同 ,函数文件的笫一行总是以
“function”引导的“函数申明行”。
•从运行上看 ,与脚本文件运行不同 ,每当函数文件运行
, MATLAB就会专门为它开辟一个临时工作空间,称为函
数工作空间( Function workspace) 。当执行文件最后一
条指令时 ,就结束该函数文件的运行,同时该临时函数空
间及其所有的中间变量就立即被清除。
• MATLAB允许使用比 “标称数目 ”较少的输入输出宗量,
实现对函数的调用 。
3
2
2
.
.
1
1
脚
脚
本
本
文
文
件
件
和
和
函
函
数
数
文
文
件
件
(
(
续
续
2
2
)
)
2.1.3 M文件的一般结构
由于从结构上看 ,脚本文件只是比函数文件少一个“函数申
明行”,所以只须描述清楚函数文件的结构 。
典型 M函数文件的结构如下 :
• 函数申明行:位于函数文件的首行,以关键字 functio 开头
,函数名以及函数的输入输出宗量都在这一行被定义。
• 笫一注释行:紧随函数申明行之后以%开头笫一注释行。
该行供lookfor关键词查询和 help在线帮助使用 。
• 在线帮助文本区 :笫一注释行及其之后的连续以%开头的
所有注释行构成整个在线帮助文本。
• 编写和修改记录:与在线帮助文本区相隔一个“空”行,也以
%开头,标志编写及修改该M文件的作者和日期等 。
• 函数体:为清晰起见,它与前面的注释以“空”行相隔。
例 2_2_1:M函数文件示例。
4
2
2
.
.
2
2
函
函
数
数
调
调
用
用
和
和
参
参
数
数
传
传
递
递
2.2.1 局部变量和全局变量
局部(Local)变量:它存在于函数空间内部的中间变量,
产生于该函数的运行过程中,其影响范围也仅限于该函数本
身 。
全局(Global)变量:通过 global 指令,MATLAB也允许几
个不同的函数空间以及基本工作空间共享同一个变量,这种被
共享的变量称为全局变量。
2.2.2 函数调用
在MATLAB中,调用函数的常用形式是:
[输出参数1,输出参数2,…] = 函数名(输入参数1,输入参数2, …)
函数调用可以嵌套,一个函数可以调用别的函数,甚至调
用它自己 (递归调用)。
5