目 录 第1章MATLAB简介 ,1 2.3.2矩阵元素的表示及相关操作..31 1.1 MATLAB的发展沿革..1 2.33矩阵的创建 .34 1.2 MATLAB的特点及应用领域.2 2.3.4矩阵的代数运算.40 1.3 MATLAB系统及工具箱3 2.4数组运算.… .48 1.4 MATLAB的安装和启动4 2.4.1多维数组元素的存储次序.48 1.5 MATLAB操作界面5 2.4.2多维数组的创建 48 l.5.1命令窗▣(Command Window)..5 2.4.3数组的代数运算51 1.5.2历史命令(Command 2.4.4数组的关系与逻辑运算.54 2.4.5数组和矩阵函数的通用形式..57 History)窗口..... .9 1.5.3当前目录(Current Directory) 2.5字符串运算59 2.5.1字符串变量与一维字符 窗口. 11 1.5.4工作空间(Workspace)窗口…12 数组59 2.5.2对字符串的多项操作 1.5.5帮助Help)窗口.13 .60 2.5.3 二维字符数组 1.6 MATLAB的各种文件.14 62 2.6小结 ...63 1.7 MATLAB的搜索路径....14 2.7习题 1.7.1搜索路径机制和搜索顺序...14 .63 1.7.2设置搜索路径的方法…15 第3章MATLAB数值运算 65 1.8 MATLAB窗口操作命令 16 3.1多项式65 1.9小结… 18 3.1.1多项式的表达和创建.65 1.10习题 18 3.12多项式的四则运算 .65 第2章MATLAB语言基础 20 3.1.3多项式求值和求根运算68 2.1基本概念.20 3.1.4多项式的构造 70 3.2插值和拟合. .71 2.1.1 MATLAB数据类型.20 2.1.2常量与变量...…21 3.2.1多项式插值和拟合 .71 2.1.3标量、向量、矩阵与数组22 3.2.2最小二乘法拟合 77 2.1.4字符串… 23 3.3数值微积分.79 2.1.5运算符. 3.3.1微分和差分 23 79 2.1.6命令、函数、表达式和语句.26 3.3.2牛顿-科茨系列数值积分 2.2向量运算27 公式… .81 2.2.1向量的生成27 3.4线性方程组的数值解 .83 2.2.2向量的加减和数乘运算…28 3.4.1直接法.84 .85 2.2.3向量的点、叉积运算…29 3.4.2迭代法 2.3矩阵运算.3引 3.5稀疏矩阵.89 2.3.1矩阵元素的存储次序…31 3.5.1稀疏矩阵的建立..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 5.61线性方程组的解析解.…149 3.6常微分方程的数值解..95 5.6.2非线性方程(组)的解析解.…150 3.6.1欧拉法 96 5.6.3常微分方程(组)的解析解.…152 3.6.2龙格-库塔方法 99 5.7小结 154 3.7小结 .102 5.8习题 154 3.8习题 .102 第6章 MATLAB程序设计..157 第4章结构数组与细胞数组 104 6.1M文件.… ..157 4.1结构数组104 6.11局部变量与全局变量 .157 4.1.1结构数组的创建 104 6.1.2M文件的编辑与运行 .158 4.1.2结构数组的操作 106 6.1.3脚本文件 .159 4.2细胞数组113 6.1.4函数文件 .160 4.2.1细胞数组的创建 .113 6.1.5函数调用.… .161 4.2.2细胞数组的操作 115 6.2 MATLAB的程序控制结构.164 4.2.3 结构细胞数组 123 6.2.1循环结构 164 4.3小结.124 6.2.2选择结构.…169 4.4习题 ..124 6.2.3 程序流的控制 ..173 第5章 MATLAB符号运算 .128 6.3数据的输入与输出 173 5.1符号对象及其表达方式… 6.3.1键盘输入语句(nput).173 .128 5.1.1符号常量和变量 128 6.3.2屏幕输出语句(disp).…174 6.3.3M数据文件的存储/加载 5.1.2符号表达式130 5.1.3符号矩阵131 (save/load.........174 6.3.4格式化文本文件的存储/ 5.2符号算术运算132 5.2.1符号对象的加减.132 读取(fprintf/fscanf.).174 6.3.5二进制数据文件的存储/ 5.2.2符号对象的乘除133 5.3独立变量与表达式化简.134 读取(fwrite/fead......174 5.3.1表达式中的独立变量…134 6.3.6数据文件行存储/读取 5.3.2表达式化简135 (fgetl /fgets)175 5.4符号微积分运算140 6.4 MATLAB文件操作 175 5.4.1符号极限140 6.5 面向对象编程177 5.4.2符号微分141 6.5.1面向对象程序设计的基本 5.4.3符号积分.141 方法 .177 5.4.4符号Taylor级数展开…142 6.5.2面向对象的程序设计实例…179 5.5符号积分变换144 6.6 MATLAB程序优化 181 5.5.1傅里叶变换及其反变换144 6.7 程序调试… 182 5.5.2拉普拉斯变换及其反变换.145 6.8小结 183 5.5.3Z变换及其反变换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
录 ·VI· 第7章MATLAB数据可视化 185 第8章 交互式仿真集成环境 SIMULINK .214 7.1二维图形185 8.1 SIMULINK简介 ,214 7.1.1 MATLAB的图形窗口..186 7.1.2 基本二维图形绘制 187 8.l.1 SIMULINK特点 214 7.1.3其他类型的二维图 189 8.1.2 SIMULINK的工作环境.215 8.1.3 SIMULINK仿真基本步骤..216 7.1.4 色彩和线型 ..191 7.1.5坐标轴及标注 193 8.2模型的创建217 7.1.6子图194 8.2.1模型概念和文件操作 217 7.2三维图形195 82.2模块操作218 8.2.3信号线操作 .221 7.2.1三维曲线图196 8.2.4对模型的注释 .223 7.2.2 三维曲面图.196 8.2.5常用的Source信源 7.2.3视角控制.200 223 8.2.6常用的Sink信宿 7.2.4其他图形函数 202 230 7.3图像. 8.2.7仿真的配置 .205 235 7.3.1图像的类别和显示 205 8.2.8启动仿真.239 7.3.2图像的读写207 8.3 SIMULINK仿真实例.239 8.4小结.… 7.4函数绘图 .245 208 7.4.1一元函数绘图 208 8.5习题246 7.4.2二元函数绘图 .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
第1章 MATLAB简介 教学提示:MATLAB是目前在国际上被广泛接受和使用的科学与工程计算软件。虽 然Cleve Moler教授开发它的初衷是为了更简单、更快捷地解决矩阵运算,但MATLAB现 在的发展已经使其成为一种集数值运算、符号运算、数据可视化、图形界面设计、程序设 计、仿真等多种功能于一体的集成软件。 教学要求:了解MATLAB的发展历史、特点和功能,了解MATLAB工具箱的概念及 类型。重点掌握MATLAB主界面各窗口的用途和操作方法。 1.1 MATLAB的发展沿革 20世纪70年代中后期,曾在密西根大学、斯坦福大学和新墨西哥大学担任数学与计 算机科学教授的Cleve Moler博士,为讲授矩阵理论和数值分析课程的需要,他和同事用 Fortran语言编写了两个子程序库EISPACK和LINPACK,这便是构思和开发MATLAB的 起点。MATLAB一词是对Matrix Laboratory(矩阵实验室)的缩写,由此可看出MATLAB与 矩阵计算的渊源。MATLAB除了利用EISPACK和LINPACK两大软件包的子程序外,还 包含了用Fortran语言编写的、用于承担命令翻译的部分。 为进一步推动MATLAB的应用,在20世纪80年代初,John Little等人将先前的 MATLAB全部用C语言进行改写,形成了新一代的MATLAB。1984年,Cleve Moler和 John Little等人成立Math Works公司,并于同年向市场推出了第一个MATLAB的商业版 本。随着市场接受度的提高,其功能也不断增强,在完成数值计算的基础上,新增了数据 可视化以及与其他流行软件的接口等功能,并开始了对MATLAB工具箱的研究开发。 1993年,MathWorks公司推出了基于PC的以Windows为操作系统平台的MATLAB4.0 版。1994年推出的4.2版,扩充了4.0版的功能,尤其在图形界面设计方面提供了新的 方法。 1997年推出的MATLAB5.0版增加了更多的数据结构,如结构数组、细胞数组、多维 数组、对象、类等,使其成为一种更方便的编程语言。1999年初推出的MATLAB5.3版在 很多方面又进一步改进了MATLAB的功能。 2000年10月底推出了全新的MATLAB6.0正式版(Release12),在核心数值算法、界 面设计、外部接口、应用桌面等诸多方面有了极大的改进。时隔2年,即2002年8月又推 出了MATLAB6.5版,其操作界面进一步集成化,并开始运用IT加速技术,使运算速度 有了明显提高。 2004年7月,MathWorks公司又推出了MATLAB7.0版(Release 14),其中集成了 MATLAB7.0编译器、Simulink6.0图形仿真器及很多工具箱,在编程环境、代码效率、数 据可视化、文件/O等方面都进行了全面的升级
第 1 章 MATLAB 简介 教学提示:MATLAB 是目前在国际上被广泛接受和使用的科学与工程计算软件。虽 然 Cleve Moler 教授开发它的初衷是为了更简单、更快捷地解决矩阵运算,但 MATLAB 现 在的发展已经使其成为一种集数值运算、符号运算、数据可视化、图形界面设计、程序设 计、仿真等多种功能于一体的集成软件。 教学要求:了解 MATLAB 的发展历史、特点和功能,了解 MATLAB 工具箱的概念及 类型。重点掌握 MATLAB 主界面各窗口的用途和操作方法。 1.1 MATLAB 的发展沿革 20 世纪 70 年代中后期,曾在密西根大学、斯坦福大学和新墨西哥大学担任数学与计 算机科学教授的 Cleve Moler 博士,为讲授矩阵理论和数值分析课程的需要,他和同事用 Fortran 语言编写了两个子程序库 EISPACK 和 LINPACK,这便是构思和开发 MATLAB 的 起点。MATLAB 一词是对 Matrix Laboratory(矩阵实验室)的缩写,由此可看出 MATLAB 与 矩阵计算的渊源。MATLAB 除了利用 EISPACK 和 LINPACK 两大软件包的子程序外,还 包含了用 Fortran 语言编写的、用于承担命令翻译的部分。 为进一步推动 MATLAB 的应用,在 20 世纪 80 年代初,John Little 等人将先前的 MATLAB 全部用 C 语言进行改写,形成了新一代的 MATLAB。1984 年,Cleve Moler 和 John Little 等人成立 MathWorks 公司,并于同年向市场推出了第一个 MATLAB 的商业版 本。随着市场接受度的提高,其功能也不断增强,在完成数值计算的基础上,新增了数据 可视化以及与其他流行软件的接口等功能,并开始了对 MATLAB 工具箱的研究开发。 1993年,MathWorks公司推出了基于PC的以Windows为操作系统平台的MATLAB 4.0 版。1994 年推出的 4.2 版,扩充了 4.0 版的功能,尤其在图形界面设计方面提供了新的 方法。 1997 年推出的 MATLAB 5.0 版增加了更多的数据结构,如结构数组、细胞数组、多维 数组、对象、类等,使其成为一种更方便的编程语言。1999 年初推出的 MATLAB 5.3 版在 很多方面又进一步改进了 MATLAB 的功能。 2000 年 10 月底推出了全新的 MATLAB 6.0 正式版(Release 12),在核心数值算法、界 面设计、外部接口、应用桌面等诸多方面有了极大的改进。时隔 2 年,即 2002 年 8 月又推 出了 MATLAB 6.5 版,其操作界面进一步集成化,并开始运用 JIT 加速技术,使运算速度 有了明显提高。 2004 年 7 月,MathWorks 公司又推出了 MATLAB 7.0 版(Release l4),其中集成了 MATLAB 7.0 编译器、Simulink 6.0 图形仿真器及很多工具箱,在编程环境、代码效率、数 据可视化、文件 I/O 等方面都进行了全面的升级
2· MATLAB基础及其应用教程 最近的一次版本更新是在2005年9月,Mathworks公司推出了MATLAB7.1版,包括 了新的时间序列分析工具,进一步加强了对Macintosh平台的支持。另外,此前的两次较 小范围的更新主要提供了一个Liux平台上的64位版本,并且优化了工作在Liux和 Macintosh平台上的基本线性代数子程序库。 显然,今天的MATLAB己经不再是仅仅解决矩阵与数值计算的软件,更是一种集数 值与符号运算、数据可视化图形表示与图形界面设计、程序设计、仿真等多种功能于一体 的集成软件。观察由欧美引进的新版教材,MATLAB己经成为线性代数、数值分析计算、 数学建模、信号与系统分析、自动控制、数字信号处理、通信系统仿真等一批课程的基本 教学工具。而在国内,随着MATLAB在我国高校的推广和应用,MATLAB已经渐入人心。 1.2 MATLAB的特点及应用领域 MATLAB有两种基本的数据运算量:数组和矩阵,单从形式上,它们之间是不好区分 的。每一个量可能被当作数组,也可能被当作矩阵,这要依所采用的运算法则或运算函数 来定。在MATLAB中,数组与矩阵的运算法则和运算函数是有区别的。但不论是MATLAB 的数组还是MATLAB的矩阵,都已经改变了一般高级语言中使用数组的方式和解决矩阵 问题的方法。 在MATLAB中,矩阵运算是把矩阵视为一个整体来进行,基本上与线性代数的处理 方法一致。矩阵的加减乘除、乘方开方、指数对数等运算,都有一套专门的运算符或运算 函数。而对于数组,不论是算术的运算,还是关系或逻辑的运算,甚至于调用函数的运算, 形式上可以当作整体,有一套有别于矩阵的、完整的运算符和运算函数,但实质上却是针 对数组的每个元素施行的。 当MATLAB把矩阵(或数组)独立地当作一个运算量来对待后,向下可以兼容向量和标 量。不仅如此,矩阵和数组中的元素可以用复数作基本单元,向下可以包含实数集。这些 是MATLAB区别于其他高级语言的根本特点。以此为基础,还可以概括出如下一些 MATLAB的特色。 1.语言简洁,编程效率高 因为MATLAB定义了专门用于矩阵运算的运算符,使得矩阵运算就像列出算式执行 标量运算一样简单,而且这些运算符本身就能执行向量和标量的多种运算。利用这些运算 符可使一般高级语言中的循环结构变成一个简单的MATLAB语句,再结合MATLAB丰富 的库函数可使程序变得相当简短,几条语句即可代替数十行C语言或Fortran语言程序语句 的功能。 2.交互性好,使用方便 在MATLAB的命令窗口中,输入一条命令,立即就能看到该命令的执行结果,体现 了良好的交互性。交互方式减少了编程和调试程序的工作量,给使用者带来了极大的方便。 因为不用像使用C语言和Fortran语言那样,首先编写源程序,然后对其进行编译、连接, 待形成可执行文件后,方可运行程序得出结果。 ·2…
·2· MATLAB 基础及其应用教程 ·2· 最近的一次版本更新是在 2005 年 9 月,Mathworks 公司推出了 MATLAB 7.1 版,包括 了新的时间序列分析工具,进一步加强了对 Macintosh 平台的支持。另外,此前的两次较 小范围的更新主要提供了一个 Linux 平台上的 64 位版本,并且优化了工作在 Linux 和 Macintosh 平台上的基本线性代数子程序库。 显然,今天的 MATLAB 已经不再是仅仅解决矩阵与数值计算的软件,更是一种集数 值与符号运算、数据可视化图形表示与图形界面设计、程序设计、仿真等多种功能于一体 的集成软件。观察由欧美引进的新版教材,MATLAB 已经成为线性代数、数值分析计算、 数学建模、信号与系统分析、自动控制、数字信号处理、通信系统仿真等一批课程的基本 教学工具。而在国内,随着 MATLAB 在我国高校的推广和应用,MATLAB 已经渐入人心。 1.2 MATLAB 的特点及应用领域 MATLAB 有两种基本的数据运算量:数组和矩阵,单从形式上,它们之间是不好区分 的。每一个量可能被当作数组,也可能被当作矩阵,这要依所采用的运算法则或运算函数 来定。在 MATLAB 中,数组与矩阵的运算法则和运算函数是有区别的。但不论是 MATLAB 的数组还是 MATLAB 的矩阵,都已经改变了一般高级语言中使用数组的方式和解决矩阵 问题的方法。 在 MATLAB 中,矩阵运算是把矩阵视为一个整体来进行,基本上与线性代数的处理 方法一致。矩阵的加减乘除、乘方开方、指数对数等运算,都有一套专门的运算符或运算 函数。而对于数组,不论是算术的运算,还是关系或逻辑的运算,甚至于调用函数的运算, 形式上可以当作整体,有一套有别于矩阵的、完整的运算符和运算函数,但实质上却是针 对数组的每个元素施行的。 当 MATLAB 把矩阵(或数组)独立地当作一个运算量来对待后,向下可以兼容向量和标 量。不仅如此,矩阵和数组中的元素可以用复数作基本单元,向下可以包含实数集。这些 是 MATLAB 区别于其他高级语言的根本特点。以此为基础,还可以概括出如下一些 MATLAB 的特色。 1. 语言简洁,编程效率高 因为 MATLAB 定义了专门用于矩阵运算的运算符,使得矩阵运算就像列出算式执行 标量运算一样简单,而且这些运算符本身就能执行向量和标量的多种运算。利用这些运算 符可使一般高级语言中的循环结构变成一个简单的 MATLAB 语句,再结合 MATLAB 丰富 的库函数可使程序变得相当简短,几条语句即可代替数十行 C 语言或 Fortran 语言程序语句 的功能。 2. 交互性好,使用方便 在 MATLAB 的命令窗口中,输入一条命令,立即就能看到该命令的执行结果,体现 了良好的交互性。交互方式减少了编程和调试程序的工作量,给使用者带来了极大的方便。 因为不用像使用 C 语言和 Fortran 语言那样,首先编写源程序,然后对其进行编译、连接, 待形成可执行文件后,方可运行程序得出结果
第1章TLAB简介 ·3。 3.强大的绘图能力,便于数据可视化 MATLAB不仅能绘制多种不同坐标系中的二维曲线,还能绘制三维曲面,体现了强大 的绘图能力。正是这种能力为数据的图形化表示(即数据可视化)提供了有力工具,使数据 的展示更加形象生动,有利于揭示数据间的内在关系。 4.学科众多、领域广泛的工具箱 MATLAB工具箱(函数库)可分为两类:功能性工具箱和学科性工具箱。功能性工具箱 主要用来扩充其符号计算功能、图示建模仿真功能、文字处理功能以及与硬件实时交互的 功能。而学科性工具箱是专业性比较强的,如优化工具箱、统计工具箱、控制工具箱、通 信工具箱、图像处理工具箱、小波工具箱等。 5.开放性好,易于扩充 除内部函数外,MATLAB的其他文件都是公开的、可读可改的源文件,体现了 MATLAB的开放性特点。用户可修改源文件和加入自己的文件,甚至构造自己的工具箱。 6.与C语言和Fortran语言有良好的接口 通过MEX文件,可以方便地调用C语言和Fortran语言编写的函数或程序,完成 MATLAB与它们的混合编程,充分利用已有的C语言和Fortran语言资源。 MATLAB的应用领域十分广阔,典型的应用举例如下: (I)数据分析: (2)数值与符号计算: (3)工程与科学绘图: (4)控制系统设计: (⑤)航天工业: (6)汽车工业: (7)生物医学工程: (8)语音处理: (9)图像与数字信号处理: (10)财务、金融分析: (11)建模、仿真及样机开发: (12)新算法研究开发: (13)图形用户界面设计。 1.3 MATLAB系统及工具箱 概括地讲,整个MATLAB系统由两部分组成,一是MATLAB基本部分,二是各种功 能性和学科性的工具箱,系统的强大功能由它们表现出来。 基本部分包括数组、矩阵运算,代数和超越方程的求解,数据处理和傅里叶变换,数 值积分等。 ·3
第 1 章 MATLAB 简介 ·3· ·3· 3. 强大的绘图能力,便于数据可视化 MATLAB 不仅能绘制多种不同坐标系中的二维曲线,还能绘制三维曲面,体现了强大 的绘图能力。正是这种能力为数据的图形化表示(即数据可视化)提供了有力工具,使数据 的展示更加形象生动,有利于揭示数据间的内在关系。 4. 学科众多、领域广泛的工具箱 MATLAB 工具箱(函数库)可分为两类:功能性工具箱和学科性工具箱。功能性工具箱 主要用来扩充其符号计算功能、图示建模仿真功能、文字处理功能以及与硬件实时交互的 功能。而学科性工具箱是专业性比较强的,如优化工具箱、统计工具箱、控制工具箱、通 信工具箱、图像处理工具箱、小波工具箱等。 5. 开放性好,易于扩充 除内部函数外,MATLAB 的其他文件都是公开的、可读可改的源文件,体现了 MATLAB 的开放性特点。用户可修改源文件和加入自己的文件,甚至构造自己的工具箱。 6. 与 C 语言和 Fortran 语言有良好的接口 通过 MEX 文件,可以方便地调用 C 语言和 Fortran 语言编写的函数或程序,完成 MATLAB 与它们的混合编程,充分利用已有的 C 语言和 Fortran 语言资源。 MATLAB 的应用领域十分广阔,典型的应用举例如下: (1) 数据分析; (2) 数值与符号计算; (3) 工程与科学绘图; (4) 控制系统设计; (5) 航天工业; (6) 汽车工业; (7) 生物医学工程; (8) 语音处理; (9) 图像与数字信号处理; (10) 财务、金融分析; (11) 建模、仿真及样机开发; (12) 新算法研究开发; (13) 图形用户界面设计。 1.3 MATLAB 系统及工具箱 概括地讲,整个 MATLAB 系统由两部分组成,一是 MATLAB 基本部分,二是各种功 能性和学科性的工具箱,系统的强大功能由它们表现出来。 基本部分包括数组、矩阵运算,代数和超越方程的求解,数据处理和傅里叶变换,数 值积分等
4· MATLAB基础及其应用教程 工具箱实际是用MATLAB语句编成的、可供调用的函数文件集,用于解决某一方面 的专门问题或实现某一类新算法。MATLAB工具箱中的函数文件可以修改、增加或删除, 用户也可根据自己研究领域的需要自行开发工具箱并外挂到MATLAB中。Internet上有大 量的由用户开发的工具箱资源。 到目前为止,MATLAB本身提供的工具箱有40多个,其中主要的有: (I)生物信息科学工具箱Bioinformatics Toolbox): (2)通信工具箱(Communication Toolbox): (3)控制系统工具箱(Control System Toolbox): (4)曲线拟合工具箱(Curve Fitting Toolbox): (5)数据采集工具箱(Data Acquisition Toolbox): (6)滤波器设计工具箱(Filter Design Toolbox): (T)财政金融工具箱(Financial Toolbox): (8)频域系统辨识工具箱(Frequency System Identification Toolbox): (9)模糊逻辑工具箱(Fuzzy Logic Toolbox): (IO)遗传算法和直接搜索工具箱(Genetic Algorithm and Direct Search Toolbox): (11)图像处理工具箱mage Processing Toolbox): (I2)地图工具箱Mapping Toolbox): I3)模型预测控制工具箱(Model Predictive Control Toolbox): (I4)神经网络工具箱Neural Network Toolbox): (15)优化工具箱(Optimization Toolbox): (I6)偏微分方程工具箱(Partial Differential Equation Toolbox): (17)信号处理工具箱(Signal Processing Toolbox): (I8)仿真工具箱(Simulink Toolbox): (I9)统计工具箱(Statistics Toolbox): (20)符号运算工具箱(Symbolic Math Toolbox): (2l)系统辨识工具箱(System Identification Toolbox): (22)小波工具箱(Wavelet Toolbox)。 1.4 MATLAB的安装和启动 当计算机的软硬件均达到MATLAB的安装要求后,只需将MATLAB的安装光盘放入 光驱,安装程序将会自动提示安装步骤,按所给提示做出选择,便能顺利完成安装。 MATLAB对计算机软硬件的大致安装要求是: (I)Windows2000、Windows XP的操作系统: (2)Pentium III、Pentium IV的CPU: (3)128MB左右的内存; (4)10GB左右的硬盘: (⑤)最好支持16位颜色,分辨率在800×600以上的显示卡和显示器: 4…
·4· MATLAB 基础及其应用教程 ·4· 工具箱实际是用 MATLAB 语句编成的、可供调用的函数文件集,用于解决某一方面 的专门问题或实现某一类新算法。MATLAB 工具箱中的函数文件可以修改、增加或删除, 用户也可根据自己研究领域的需要自行开发工具箱并外挂到 MATLAB 中。Internet 上有大 量的由用户开发的工具箱资源。 到目前为止,MATLAB 本身提供的工具箱有 40 多个,其中主要的有: (1) 生物信息科学工具箱(Bioinformatics Toolbox); (2) 通信工具箱(Communication Toolbox); (3) 控制系统工具箱(Control System Toolbox); (4) 曲线拟合工具箱(Curve Fitting Toolbox); (5) 数据采集工具箱(Data Acquisition Toolbox); (6) 滤波器设计工具箱(Filter Design Toolbox); (7) 财政金融工具箱(Financial Toolbox); (8) 频域系统辨识工具箱(Frequency System Identification Toolbox); (9) 模糊逻辑工具箱(Fuzzy Logic Toolbox); (10) 遗传算法和直接搜索工具箱(Genetic Algorithm and Direct Search Toolbox); (11) 图像处理工具箱(Image Processing Toolbox); (12) 地图工具箱(Mapping Toolbox); (13) 模型预测控制工具箱(Model Predictive Control Toolbox); (14) 神经网络工具箱(Neural Network Toolbox); (15) 优化工具箱(Optimization Toolbox); (16) 偏微分方程工具箱(Partial Differential Equation Toolbox); (17) 信号处理工具箱(Signal Processing Toolbox); (18) 仿真工具箱(Simulink Toolbox); (19) 统计工具箱(Statistics Toolbox); (20) 符号运算工具箱(Symbolic Math Toolbox); (21) 系统辨识工具箱(System Identification Toolbox); (22) 小波工具箱(Wavelet Toolbox)。 1.4 MATLAB 的安装和启动 当计算机的软硬件均达到 MATLAB 的安装要求后,只需将 MATLAB 的安装光盘放入 光驱,安装程序将会自动提示安装步骤,按所给提示做出选择,便能顺利完成安装。 MATLAB 对计算机软硬件的大致安装要求是: (1) Windows 2000、Windows XP 的操作系统; (2) Pentium III、Pentium IV 的 CPU; (3) 128MB 左右的内存; (4) 10GB 左右的硬盘; (5) 最好支持 16 位颜色,分辨率在 800×600 以上的显示卡和显示器;
第1章MATLAB简介 ·5 (6)光驱。 成功安装后,MATLAB将在桌面放置一图标,双击该图标即可启动MATLAB并显示 MATLAB的工作窗口界面。 1.5 MATLAB操作界面 安装后首次启动MATLAB所得的操作界面如图1.1所示,这是系统默认的、未曾被用 户依据自身需要和喜好设置过的界面。 MATLAB的主界面是一个高度集成的工作环境,有4个不同职责分工的窗口。它们分 别是命令窗口(Command Window)、历史命令(Command History)窗口、当前目录(Current Directory)窗口和工作空间(Workspace)窗口。除此之外,MATLAB6.5之后的版本还添加 了开始按钮(Start)。 菜单栏 HATLAB ▣☒ Eile Edit Debug Desktop Eindow Help 工具栏 它花电毫7等图目?1 es\MATLABT1 work 当前目录 Shortcuts☑How to Add☒What'sMew 设置区 Workspace Conmand Window 省国担四·Bse Warning:MATLAB Toolbox Path Cache is 工作空间 Wame▲ Value Type 'help toolbox_path_cache'for mor 窗口 命令窗口 To get started,select MAILAB Help o Command History 历史命 06-9-22下午4:07-光A 令窗口 c=[12:34] size(c) a=24.5.h='Hi.Miss R1 开始按钮 么Strt 图1.1 MATLAB默认的主界面 菜单栏和工具栏在组成方式和内容上与一般应用软件基本相同或相似,本章不准备给 出详细说明,待后面用到时自会明了。下面重点介绍MATLAB的5个窗口。 1.5.1命令窗口(Command Window) 在MATLAB默认主界面的右边是命令窗口。因为MATLAB至今未被汉化,所有窗口 名都用英文表示,所以“Command Window”即指命令窗口。 命令窗口顾名思义是接收命令输入的窗口,但实际上,可输入的对象除MATLAB命 令之外,还包括函数、表达式、语句以及M文件名或MEX文件名等,为叙述方便,这些 可输入的对象以下通称语句。 MATLAB的工作方式之一是:在命令窗口中输入语句,然后由MATLAB逐句解释执 ·5
第 1 章 MATLAB 简介 ·5· ·5· (6) 光驱。 成功安装后,MATLAB 将在桌面放置一图标,双击该图标即可启动 MATLAB 并显示 MATLAB 的工作窗口界面。 1.5 MATLAB 操作界面 安装后首次启动 MATLAB 所得的操作界面如图 1.1 所示,这是系统默认的、未曾被用 户依据自身需要和喜好设置过的界面。 MATLAB 的主界面是一个高度集成的工作环境,有 4 个不同职责分工的窗口。它们分 别是命令窗口(Command Window)、历史命令(Command History)窗口、当前目录(Current Directory)窗口和工作空间 (Workspace)窗口。除此之外,MATLAB 6.5 之后的版本还添加 了开始按钮(Start)。 菜单栏 历史命 令窗口 工作空间 窗口 开始按钮 工具栏 命令窗口 当前目录 设置区 图 1.1 MATLAB 默认的主界面 菜单栏和工具栏在组成方式和内容上与一般应用软件基本相同或相似,本章不准备给 出详细说明,待后面用到时自会明了。下面重点介绍 MATLAB 的 5 个窗口。 1.5.1 命令窗口(Command Window) 在 MATLAB 默认主界面的右边是命令窗口。因为 MATLAB 至今未被汉化,所有窗口 名都用英文表示,所以“Command Window”即指命令窗口。 命令窗口顾名思义是接收命令输入的窗口,但实际上,可输入的对象除 MATLAB 命 令之外,还包括函数、表达式、语句以及 M 文件名或 MEX 文件名等,为叙述方便,这些 可输入的对象以下通称语句。 MATLAB 的工作方式之一是:在命令窗口中输入语句,然后由 MATLAB 逐句解释执
6· MATLAB基础及其应用教程 行并在命令窗口中给出结果。命令窗口可显示除图形以外的所有运算结果。 命令窗口可从MATLAB主界面中分离出来,以便单独显示和操作,当然也可重新返 回主界面中,其他窗口也有相同的行为。分离命令窗口可执行Desktop菜单中的Undock Command Window命令,也可单击窗口右上角的按钮,另外还可以直接用鼠标将命令窗 口拖离主界面,其结果如图12所示。若将命令窗口返回到主界面中,可单击窗口右上角 的¥按钮,或执行Desktop菜单中的Dock Command Window命令。下面分几点对使用命 令窗口的一些相关问题加以说明。 Command Vindow 日回☒ 里ile Edit Debug卫esktop Window Help >format compact >a=24.5,b='Hi,Miss Black' a= 24.5000 b= Hi,Miss Black >if a>10 d=5,end d= 图1.2分离的命令窗口 1.命令提示符和语句颜色 在图12中,每行语句前都有一个符号“>”,此即命令提示符。在此符号后(也只能 在此符号后)输入各种语句并按Eter键,方可被MATLAB接收和执行。执行的结果通常 就直接显示在语句下方,如图1.2所示。 不同类型语句用不同颜色区分。在默认情况下,输入的命令、函数、表达式以及计算 结果等采用黑色字体,字符串采用赭红色,if、or等关键词采用蓝色,注释语句用绿色。 2.语句的重复调用、编辑和重运行 命令窗口不仅能编辑和运行当前输入的语句,而且对曾经输入的语句也有快捷的方法 进行重复调用、编辑和运行。成功实施重复调用的前提是已输入的语句仍然保存在命令历 史窗口中(未对该窗口执行清除操作)。而重复调用和编辑的快捷方法就是利用表1-1所列 的键盘按键。 表1-1语句行用到的编辑键 键盘按键 键的用途 键盘按键 键的用途 ↑ 向上回调以前输入的语句行 Home 让光标跳到当前行的开头 向下回调以前输入的语句行 End 让光标跳到当前行的末尾 ← 光标在当前行中左移一字符 Delete 删除当前行光标后的字符 光标在当前行中右移一字符 Backspace 删除当前行光标前的字符 6…
·6· MATLAB 基础及其应用教程 ·6· 行并在命令窗口中给出结果。命令窗口可显示除图形以外的所有运算结果。 命令窗口可从 MATLAB 主界面中分离出来,以便单独显示和操作,当然也可重新返 回主界面中,其他窗口也有相同的行为。分离命令窗口可执行 Desktop 菜单中的 Undock Command Window 命令,也可单击窗口右上角的 按钮,另外还可以直接用鼠标将命令窗 口拖离主界面,其结果如图 1.2 所示。若将命令窗口返回到主界面中,可单击窗口右上角 的 按钮,或执行 Desktop 菜单中的 Dock Command Window 命令。下面分几点对使用命 令窗口的一些相关问题加以说明。 图 1.2 分离的命令窗口 1. 命令提示符和语句颜色 在图 1.2 中,每行语句前都有一个符号“>>”,此即命令提示符。在此符号后(也只能 在此符号后)输入各种语句并按 Enter 键,方可被 MATLAB 接收和执行。执行的结果通常 就直接显示在语句下方,如图 1.2 所示。 不同类型语句用不同颜色区分。在默认情况下,输入的命令、函数、表达式以及计算 结果等采用黑色字体,字符串采用赭红色,if、for 等关键词采用蓝色,注释语句用绿色。 2. 语句的重复调用、编辑和重运行 命令窗口不仅能编辑和运行当前输入的语句,而且对曾经输入的语句也有快捷的方法 进行重复调用、编辑和运行。成功实施重复调用的前提是已输入的语句仍然保存在命令历 史窗口中(未对该窗口执行清除操作)。而重复调用和编辑的快捷方法就是利用表 1-1 所列 的键盘按键。 表 1-1 语句行用到的编辑键 键盘按键 键的用途 键盘按键 键的用途 ↑ 向上回调以前输入的语句行 Home 让光标跳到当前行的开头 ↓ 向下回调以前输入的语句行 End 让光标跳到当前行的末尾 ← 光标在当前行中左移一字符 Delete 删除当前行光标后的字符 → 光标在当前行中右移一字符 Backspace 删除当前行光标前的字符
第1章MATLAB简介 ·7。 其实这些按键与文字处理软件中介绍的同一编辑键在功能上是大体一致的,不同点主 要是:在文字处理软件中是针对整个文档使用,而MATLAB命令窗口是以行为单位使用 这些编辑键,类似于编辑DOS命令的使用手法。提到后一点是有用意的,实际上,MATLAB 有很多命令就是从DOS命令中借来的。本书1.8节还会就一些常用命令做专门介绍。 3.语句行中使用的标点符号 MATLAB在输入语句时,可能要用到表1-2所列的各种符号,这些符号在MATLAB 中所起的作用如表1-2所示。提醒一下,在向命令窗口输入语句时,一定要在英文输入状 态下输入,尤其在刚刚输完汉字后初学者很容易忽视中英文输入状态的切换。 表1-2 MATLAB语句中常用标点符号的作用 名称 符号 作用 空格 变量分隔符:矩阵一行中各元素间的分隔符:程序语句关键词分隔符 逗号 分隔欲显示计算结果的各语句:变量分隔符:矩阵一行中各元素间的分隔符 点号 数值中的小数点:结构数组的域访问符 分号 分隔不想显示计算结果的各语句:矩阵行与行的分隔符 冒号 用于生成一维数值数组:表示一维数组的全部元素或多维数组某一维的全部元素 百分号 % 注释语句说明符,凡在其后的字符视为注释性内容而不被执行 单引号 字符串标识符 圆括号 () 用于矩阵元素引用:用于函数输入变量列表:确定运算的先后次序 方括号 向量和矩阵标识符:用于函数输出列表 花括号 {} 标识细胞数组 续行号 长命令行需分行时连接下行用 赋值号 将表达式赋值给一个变量 语句行中使用标点符号示例。 >a=24.5,b='Hi,Miss Black' 号">"为命令行提示符:逗号用来分隔显示计算结果的各 语句:单引号标识字符串:“各"为注释语句说明符 a= 24.5000 b= Hi,Miss Black >>c=[12;34] 号方括号标识矩阵,分号用来分隔行,空格用来分隔元素 C= 12 34 ·7
第 1 章 MATLAB 简介 ·7· ·7· 其实这些按键与文字处理软件中介绍的同一编辑键在功能上是大体一致的,不同点主 要是:在文字处理软件中是针对整个文档使用,而 MATLAB 命令窗口是以行为单位使用 这些编辑键,类似于编辑 DOS 命令的使用手法。提到后一点是有用意的,实际上,MATLAB 有很多命令就是从 DOS 命令中借来的。本书 1.8 节还会就一些常用命令做专门介绍。 3. 语句行中使用的标点符号 MATLAB 在输入语句时,可能要用到表 1-2 所列的各种符号,这些符号在 MATLAB 中所起的作用如表 1-2 所示。提醒一下,在向命令窗口输入语句时,一定要在英文输入状 态下输入,尤其在刚刚输完汉字后初学者很容易忽视中英文输入状态的切换。 表 1-2 MATLAB 语句中常用标点符号的作用 名 称 符 号 作 用 空格 变量分隔符;矩阵一行中各元素间的分隔符;程序语句关键词分隔符 逗号 , 分隔欲显示计算结果的各语句;变量分隔符;矩阵一行中各元素间的分隔符 点号 . 数值中的小数点;结构数组的域访问符 分号 ; 分隔不想显示计算结果的各语句;矩阵行与行的分隔符 冒号 : 用于生成一维数值数组;表示一维数组的全部元素或多维数组某一维的全部元素 百分号 % 注释语句说明符,凡在其后的字符视为注释性内容而不被执行 单引号 ' ' 字符串标识符 圆括号 ( ) 用于矩阵元素引用;用于函数输入变量列表;确定运算的先后次序 方括号 [ ] 向量和矩阵标识符;用于函数输出列表 花括号 { } 标识细胞数组 续行号 … 长命令行需分行时连接下行用 赋值号 = 将表达式赋值给一个变量 语句行中使用标点符号示例。 >> a=24.5,b='Hi,Miss Black' %">>"为命令行提示符;逗号用来分隔显示计算结果的各 语句;单引号标识字符串;"%"为注释语句说明符 a= 24.5000 b= Hi,Miss Black >>c=[1 2;3 4] %方括号标识矩阵,分号用来分隔行,空格用来分隔元素 c= 1 2 3 4