21世纪全国应用型本科电子通信系列实用规划教材 MATLAB基础及其应用教程 主编周开利邓春晖 副主编李临生沈献博 参编伍小芹李爱华 王旭易家傅 北京大学出版社 PEKING UNIVERSITY PRESS
21 世纪全国应用型本科电子通信系列实用规划教材 MATLAB 基础及其应用教程 主 编 周开利 邓春晖 副主编 李临生 沈献博 参 编 伍小芹 李爱华 主 审 王 旭 易家傅 编 李 磊 张 军
前 言 MATLAB作为目前国际上最流行、应用最广泛的科学与工程计算软件,深受广大研究工 作者的欢迎,成为在校学生必须学习和堂提的基本软件,为此,许多高校开设了MATLAB 课程,广大师生迫切希望拥有一本适合MATLAB课程教学的优秀教材。北京大学出版社邀 请多所高校从事MATLAB教学的教 结合近年来的教学实践和应用开发经验编写了这本 《MATLAB基础及其应用教程》,希望能为MATLAB的教学提供一本适用且实用的优秀教 材,同时也可作为各类MATLAB培训和MATLAB相关应用开发的参考用书。 本教材基于MATLAB7.1版,讲解MATLAB的基础知识和核心内容。根据本课程“课 时少、内容多、应用广、实践性强”的特点,教材在内容编排上,尽量精简非必要的部分, 着重讲解MATLAB最基本的内容。 要学生掌握的 做到深入浅出,实例引导 进 解详实,既为教师讲授提供较大的选择余地,又为学生自主学习提供了方便 为使学生能 过练习和实际操作,在较短的时间内掌握MATLAB的基本内容及其应用技术,本教材还加 入了习题和上机实验。 本书凝结了集体的智慧,参与本书编写工作的有来自海南大学的周开利老师、伍小芹老 师、王旭老师、易家傅老师,以及厦门大学的邓春晖老师、 太原科技大学的李临生老师、南 阳师范学院 沈献博老师、烟台大学的李爱华老师 在编写过程中,周开利老师和邓春晖考 帅完成了对各章节的修改,伍小芹老师和王旭老师对文字进行了校对,最后由周开利老师统 编、定稿。 限于作者水平,本教材疏漏之处在所难免,恳请读者批评指正,有关意见可以发至主缩 的电子邮箱:kaili@hainu.edu.cn。 编者 2007年1月
前 言 MATLAB 作为目前国际上最流行、应用最广泛的科学与工程计算软件,深受广大研究工 作者的欢迎,成为在校学生必须学习和掌握的基本软件,为此,许多高校开设了 MATLAB 课程,广大师生迫切希望拥有一本适合 MATLAB 课程教学的优秀教材。北京大学出版社邀 请多所高校从事 MATLAB 教学的教师,结合近年来的教学实践和应用开发经验编写了这本 《MATLAB 基础及其应用教程》,希望能为 MATLAB 的教学提供一本适用且实用的优秀教 材,同时也可作为各类 MATLAB 培训和 MATLAB 相关应用开发的参考用书。 本教材基于 MATLAB 7.1 版,讲解 MATLAB 的基础知识和核心内容。根据本课程“课 时少、内容多、应用广、实践性强”的特点,教材在内容编排上,尽量精简非必要的部分, 着重讲解 MATLAB 最基本的内容。对需要学生掌握的内容,做到深入浅出,实例引导,讲 解详实,既为教师讲授提供较大的选择余地,又为学生自主学习提供了方便。为使学生能通 过练习和实际操作,在较短的时间内掌握 MATLAB 的基本内容及其应用技术,本教材还加 入了习题和上机实验。 本书凝结了集体的智慧,参与本书编写工作的有来自海南大学的周开利老师、伍小芹老 师、王旭老师、易家傅老师,以及厦门大学的邓春晖老师、太原科技大学的李临生老师、南 阳师范学院的沈献博老师、烟台大学的李爱华老师。在编写过程中,周开利老师和邓春晖老 师完成了对各章节的修改,伍小芹老师和王旭老师对文字进行了校对,最后由周开利老师统 编、定稿。 限于作者水平,本教材疏漏之处在所难免,恳请读者批评指正,有关意见可以发至主编 的电子邮箱:kaili@hainu.edu.cn。 编 者 2007 年 1 月
可 录 第1章MATLAB简介. 1 2.32矩阵元素的表示及相关操作.31 1.I MATLAB的发展沿革 23.3矩阵的创建 34 12 MATLAB的特点及应用领城 2 234矩阵的代数运算 13 MATLAB系统及工且箱 3 24 48 MATLAB的安装和启动 24.1多维数组元素的存储次序48 1.5 MATLAB操作界面 242多维数组的创建 .48 2.4.3数组的代致运算 .51 1.5.I命令窗▣(Command Window)..5 2.4.4数组的关系与逻组运算 54 1.5.2历史命令(Command 245数组和钜阵函数的通用形武5 Hiov)窗口. 9 25字符串运算 窗 25.1字符串变量与一维字符 ,11 数组 ..59 1.5.4工作空间(Workspace)窗口.12 252付字籍串的名顶提作60 155指助Help窗▣. 13 53一维字符数组 62 1.6 MATLAB的各种文件 14 17 AATLAB的搜陵路径 14 26小 62 搜索路径机制和搜索顺序…14 2.7习题 63 172设置搜索路径的方法 15 第3章MATLAB数值运算 65 1.8 MATLAB窗口操作命令. .16 31多项式 19小结 18 311多项式的表达和创建 .65 1.10习题 18 312名顶式的四叫云算 65 第2章MATLAB语言基础】 .20 313多项式求值和求根运算 68 2.1基木概含 20 21.MATLAB数据类型 32插值和拟合… .71 212常量与变 32.】多项式插值和拟合 .21 322最小二乘法拟合 77 2.1.3标量、向量、矩阵与数组…22 3.3数值微积分 70 2.14字符串. 23 331 2.15运算符 微分和差分 79 21.6命令、函数、表达式和语句26 33.1 牛顿-科茨系列数值积分 22向量运算 公式 81 3.4线性方程组的数值解 83 22.1向量的生成. .27 84 222向量的加减和数乘运算 34.1直接法 .28 223向量的点、义积运算 29 342迭代法 g5 2.3矩阵运算 31 35稀疏矩阵 23】矩阵元素的存储次序 31 35】稀疏矩阵的建立 90
目 录 第 1 章 MATLAB简介........................................ 1 1.1 MATLAB 的发展沿革........................... 1 1.2 MATLAB 的特点及应用领域............... 2 1.3 MATLAB 系统及工具箱....................... 3 1.4 MATLAB 的安装和启动....................... 4 1.5 MATLAB 操作界面............................... 5 1.5.1 命令窗口(Command Window)... 5 1.5.2 历史命令(Command History)窗口............................... 9 1.5.3 当前目录(Current Directory) 窗口.......................................... 11 1.5.4 工作空间(Workspace)窗口...... 12 1.5.5 帮助(Help)窗口........................ 13 1.6 MATLAB 的各种文件......................... 14 1.7 MATLAB 的搜索路径......................... 14 1.7.1 搜索路径机制和搜索顺序....... 14 1.7.2 设置搜索路径的方法 .............. 15 1.8 MATLAB 窗口操作命令..................... 16 1.9 小结 ...................................................... 18 1.10 习题 .................................................... 18 第 2 章 MATLAB 语言基础 ............................ 20 2.1 基本概念 .............................................. 20 2.1.1 MATLAB 数据类型................. 20 2.1.2 常量与变量 .............................. 21 2.1.3 标量、向量、矩阵与数组....... 22 2.1.4 字符串...................................... 23 2.1.5 运算符...................................... 23 2.1.6 命令、函数、表达式和语句... 26 2.2 向量运算 .............................................. 27 2.2.1 向量的生成 .............................. 27 2.2.2 向量的加减和数乘运算........... 28 2.2.3 向量的点、叉积运算 .............. 29 2.3 矩阵运算 .............................................. 31 2.3.1 矩阵元素的存储次序 .............. 31 2.3.2 矩阵元素的表示及相关操作... 31 2.3.3 矩阵的创建 .............................. 34 2.3.4 矩阵的代数运算....................... 40 2.4 数组运算............................................... 48 2.4.1 多维数组元素的存储次序....... 48 2.4.2 多维数组的创建....................... 48 2.4.3 数组的代数运算....................... 51 2.4.4 数组的关系与逻辑运算........... 54 2.4.5 数组和矩阵函数的通用形式... 57 2.5 字符串运算........................................... 59 2.5.1 字符串变量与一维字符 数组 .......................................... 59 2.5.2 对字符串的多项操作............... 60 2.5.3 二维字符数组........................... 62 2.6 小结 ...................................................... 63 2.7 习题 ...................................................... 63 第 3 章 MATLAB 数值运算............................. 65 3.1 多项式................................................... 65 3.1.1 多项式的表达和创建............... 65 3.1.2 多项式的四则运算................... 65 3.1.3 多项式求值和求根运算........... 68 3.1.4 多项式的构造........................... 70 3.2 插值和拟合........................................... 71 3.2.1 多项式插值和拟合................... 71 3.2.2 最小二乘法拟合....................... 77 3.3 数值微积分........................................... 79 3.3.1 微分和差分 .............................. 79 3.3.2 牛顿-科茨系列数值积分 公式 .......................................... 81 3.4 线性方程组的数值解........................... 83 3.4.1 直接法 ...................................... 84 3.4.2 迭代法 ...................................... 85 3.5 稀疏矩阵............................................... 89 3.5.1 稀疏矩阵的建立....................... 90
. MATLAB基础及其应用教程 3.5.2稀疏矩阵的存储 .92 5.6方程的解析解 149 3.5.3用稀疏矩阵求解线性方程组.93 56.1线性方程组的解析解」 149 36常微分方程的数值解 95 5.62非线性方程(组)的解析解…150 3.6.1欧拉法 96 56.3常微分方程(组)的解析解…152 龙格-库塔方法 99 5.7 小统 3,7小 .102 5.8习题 154 3.8习题 .102 第6章MATLAB程序设计 157 第4章结构数组与细胞数组 104 6.1M文件 .157 4.1结构数组 104 61.1局部变量与全局变量 .157 4L1结均数组的创建 104 6.1.2M文件的编辑与运行 158 412结构数组的操作 106 3脚本文 42细胞数组 113 6.1.4函数文件 160 42. 细胞数组的创建 .113 61.5函数调用 161 4.2.2细胞数组的操作 -115 6.2 MATLAB的程序控制结构 164 42.3结构细胞数组 123 621循环结构 164 4.3小结 124 622选择结构 169 44习避 124 62.3程序流的控制. 173 第5章MATLAB符号运算 128 6.3数据的轮入与输出 173 173 5.1符号对象及其表达方式 128 63 键盘输入语句(inpu 51.1符号常量和变 1 632屏幕输出语句(disp) -…174 6.33M数据文件的存储/加载 5.12符号表达式 130 (save load). .174 513符号5阵 131 52符号算术运算】 132 63.4 格式化文本文件的存储 符号对象的加诚 读取(fprintf/fs nf)... 174 635二进制数据文件的存储/ 522符号对象的乘陷 133 读取(fwrite/fread) 5.3独立变量与表达式化简, .134 174 53.1表达式中的独立变量 134 63.6数据文件行存储/读取 5.32表达式化简 135 (fgetl fgets) 175 54符号微积分运 6.4 MATLAB文件操作 ..175 5.4.1符号极限 .140 6.5而向对象编程. .177 5.42符号微分 141 65.1面向对象程序设计的基木 543符号积分 141 17 544符号Tayor级数展开 143 652面向对象的程序设计实例.…179 5.5符号积分变换 .144 6.6 MATLAB程序优化 181 5.5.1傅里叶变换及其反变换 182 .144 6.7程序调试 5.5.2拉普拉斯变换及其反变换145 小结 55.3乙变换及其反变换 147 6.9习题 183 VI
·VI· MATLAB 基础及其应用教程 ·VI· 3.5.2 稀疏矩阵的存储 ...................... 92 3.5.3 用稀疏矩阵求解线性方程组... 93 3.6 常微分方程的数值解........................... 95 3.6.1 欧拉法...................................... 96 3.6.2 龙格-库塔方法 ........................ 99 3.7 小结 .....................................................102 3.8 习题 .....................................................102 第 4 章 结构数组与细胞数组 ...................104 4.1 结构数组 .............................................104 4.1.1 结构数组的创建 .....................104 4.1.2 结构数组的操作 .....................106 4.2 细胞数组 .............................................113 4.2.1 细胞数组的创建 .....................113 4.2.2 细胞数组的操作 .....................115 4.2.3 结构细胞数组 .........................123 4.3 小结 .....................................................124 4.4 习题 .....................................................124 第 5 章 MATLAB 符号运算 ...........................128 5.1 符号对象及其表达方式......................128 5.1.1 符号常量和变量 .....................128 5.1.2 符号表达式 .............................130 5.1.3 符号矩阵 .................................131 5.2 符号算术运算 .....................................132 5.2.1 符号对象的加减 .....................132 5.2.2 符号对象的乘除 .....................133 5.3 独立变量与表达式化简......................134 5.3.1 表达式中的独立变量 .............134 5.3.2 表达式化简 .............................135 5.4 符号微积分运算..................................140 5.4.1 符号极限 .................................140 5.4.2 符号微分 .................................141 5.4.3 符号积分 .................................141 5.4.4 符号 Taylor 级数展开.............142 5.5 符号积分变换 .....................................144 5.5.1 傅里叶变换及其反变换..........144 5.5.2 拉普拉斯变换及其反变换......145 5.5.3 Z 变换及其反变换..................147 5.6 方程的解析解..................................... 149 5.6.1 线性方程组的解析解............. 149 5.6.2 非线性方程(组)的解析解...... 150 5.6.3 常微分方程(组)的解析解...... 152 5.7 小结 .................................................... 154 5.8 习题 .................................................... 154 第 6 章 MATLAB 程序设计........................... 157 6.1 M 文件................................................ 157 6.1.1 局部变量与全局变量............. 157 6.1.2 M 文件的编辑与运行............ 158 6.1.3 脚本文件 ................................ 159 6.1.4 函数文件 ................................ 160 6.1.5 函数调用 ................................ 161 6.2 MATLAB的程序控制结构................ 164 6.2.1 循环结构 ................................ 164 6.2.2 选择结构 ................................ 169 6.2.3 程序流的控制......................... 173 6.3 数据的输入与输出............................. 173 6.3.1 键盘输入语句(input).............. 173 6.3.2 屏幕输出语句(disp) ............... 174 6.3.3 M 数据文件的存储/加载 (save / load)............................. 174 6.3.4 格式化文本文件的存储/ 读取(fprintf / fscanf)............... 174 6.3.5 二进制数据文件的存储/ 读取(fwrite/ fread) .................. 174 6.3.6 数据文件行存储/读取 (fgetl / fgets)............................ 175 6.4 MATLAB 文件操作........................... 175 6.5 面向对象编程..................................... 177 6.5.1 面向对象程序设计的基本 方法 ........................................ 177 6.5.2 面向对象的程序设计实例..... 179 6.6 MATLAB 程序优化........................... 181 6.7 程序调试............................................. 182 6.8 小结 .................................................... 183 6.9 习题 .................................................... 183
第7章MATLAB数据可视化 185 第8章 交互式仿真集成环境 SIMULINK .214 7.1 二维图形 214 7.L.I MATLAB的图形窗口 186 &.ISIMULINK简介 &L】SIMULINK特点 214 7.12基本一雀图形绘制 187 7.13其他类型的二维图 189 8I2 SIMULINK的工作环境 7.14色彩和线型 191 81.3 SIMULINK仿真基本步操.216 7.1.5 坐标轴及标 82模型的创建 .217 82.】模型幅念和文件樱作 .217 7.16f图 -194 7.2三维图形 195 822模块操作 31g 221 7)1三维曲线图 196 823信号线操作 732三维曲面图 196 82 对模型 22 723 视角控制 825常用的Source信调 20 ,223 82.6常用的Sink信宿 230 724其他图形函数。 202 82】仿直的配置 235 73图像 205 82.8启动仿直 330 73.1图像的类别和显示 205 732图像的读写 207 8.3 SIMULINK仿真实伤 239 74 函数绘图 0 8.4小 85习题, 246 7.4. 一元函数绘图 20 7.42二元函数绘图 209 附录MATLAB上机实验 .247 7.5小结 212 7.6习原 212 .VI
目 录 ·VII· ·VII· 第 7 章 MATLAB 数据可视化.......................185 7.1 二维图形 .............................................185 7.1.1 MATLAB 的图形窗口............186 7.1.2 基本二维图形绘制 .................187 7.1.3 其他类型的二维图 .................189 7.1.4 色彩和线型 .............................191 7.1.5 坐标轴及标注 .........................193 7.1.6 子图.........................................194 7.2 三维图形 .............................................195 7.2.1 三维曲线图 .............................196 7.2.2 三维曲面图 .............................196 7.2.3 视角控制 .................................200 7.2.4 其他图形函数 .........................202 7.3 图像 .....................................................205 7.3.1 图像的类别和显示 .................205 7.3.2 图像的读写 .............................207 7.4 函数绘图 .............................................208 7.4.1 一元函数绘图 .........................208 7.4.2 二元函数绘图 .........................209 7.5 小结 .....................................................212 7.6 习题 .....................................................212 第 8 章 交互式仿真集成环境 SIMULINK ............................................ 214 8.1 SIMULINK 简介 ................................ 214 8.1.1 SIMULINK 特点.................... 214 8.1.2 SIMULINK 的工作环境 ........ 215 8.1.3 SIMULINK 仿真基本步骤 .... 216 8.2 模型的创建......................................... 217 8.2.1 模型概念和文件操作............. 217 8.2.2 模块操作 ................................ 218 8.2.3 信号线操作 ............................ 221 8.2.4 对模型的注释......................... 223 8.2.5 常用的 Source 信源................ 223 8.2.6 常用的 Sink 信宿 ................... 230 8.2.7 仿真的配置 ............................ 235 8.2.8 启动仿真 ................................ 239 8.3 SIMULINK 仿真实例 ........................ 239 8.4 小结 .................................................... 245 8.5 习题 .................................................... 246 附录 MATLAB 上机实验............................... 247