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