logo资料库

精通MATLAB R2011a.pdf

第1页 / 共389页
第2页 / 共389页
第3页 / 共389页
第4页 / 共389页
第5页 / 共389页
第6页 / 共389页
第7页 / 共389页
第8页 / 共389页
资料共389页,剩余部分请下载后查看
A1_内容简介
内 容 简 介
A2_前言
前 言
1. 编写背景
2. 编写宗旨及特点
3. 内容简介
4. 读者对象
5. 使用建议
6. 致 谢
ch01_基础准备及入门
第 1 章 基础准备及入门
1.1 MATLAB的安装和工具包选择
1.2 Desktop操作桌面的启动
1.2.1 MATLAB的启动
1.2.2 Desktop操作桌面简介
1.3 Command Window运行入门
1.3.1 Command Window指令窗简介
1.3.2 最简单的计算器使用法
1.3.3 数值、变量和表达式
1 数值的记述
2 变量命名规则
3 MATLAB默认的数学常数
4 运算符和表达式
5 面向复数设计的运算——MATLAB特点之一
6 面向数组设计的运算——MATLAB特点之二
1.4 Command Window操作要旨
1.4.1 指令窗的显示方式
1 默认的输入显示方式
2 运算结果的显示
3 显示方式的永久设置
1.4.2 指令行中的标点符号
1.4.3 指令窗的常用控制指令
1.4.4 指令窗中指令行的编辑
1.5 Command History历史指令窗
1.5.1 Command History历史指令窗简介
1.5.2 历史指令的再运行
1.6 Current Directory、路径设置器和文件管理
1.6.1 Current Directory当前目录浏览器简介
1.6.2 用户目录和当前目录设置
1.6.3 MATLAB的搜索路径
1.6.4 MATLAB搜索路径的扩展
1 何时需要修改搜索路径
2 利用设置路径对话框修改搜索路径
3 利用指令path 设置路径
1.7 工作空间浏览器和变量编辑器
1.7.1 工作空间浏览器和变量可视化
1.7.2 工作空间的管理指令
1 查询指令who及whos
2 从工作空间中删除变量和函数的指令
3 整理工作空间内存碎片的指令pack
1.7.3 Variable Editor变量编辑器
1.7.4 数据文件和变量的存取
1 借助工作空间浏览器产生保存变量的MAT文件
2 借助输入向导Import Wizard向工作空间装载变量
3 存取数据的操作指令save 和load
1.8 Editor/Debugger和脚本编写初步
1.8.1 Editor/Debugger M文件编辑器简介
1.8.2 M脚本文件编写初步
1.9 帮助系统及其使用
1.9.1 帮助体系的三大系统
1.9.2 常用帮助指令
1 函数搜索指令
2 词条搜索指令
1.9.3 Help 帮助浏览器
1 帮助浏览器的导出
2 帮助浏览器界面简介
3 帮助浏览器默认显示的利用
ch02_数值数组及向量化运算
第 2 章 数值数组及向量化运算
2.1 数值数组的创建和寻访
2.1.1 一维数组的创建
1 递增/减型一维数组的创建
2 其他类型一维数组的创建
2.1.2 二维数组的创建
1 小规模数组的直接输入法
2 中规模数组的数组编辑器创建法
3 中规模数组的M文件创建法
4 利用MATLAB函数创建数组
2.1.3 二维数组元素的标识和寻访
1 数组的维数和大小
2 数组的标识和寻访
2.1.4 数组的扩缩和特殊操作
1 数组的扩充和收缩
2 数组的特殊操作
3 数组操作函数汇总
2.2 数组运算
2.2.1 数组运算的由来和规则
1 函数关系数值计算模型的分类
2 提高程序执行性能的三大措施
3 数组运算规则
4 数组运算符及数组运算函数
2.2.2 数组运算和向量化编程
2.2.3 数组特殊运算指令汇总
2.3 高维数组
2.3.1 高维数组的创建
2.3.2 高维数组的孤维删除
2.3.3 高维数组的维度重排
2.4 “非数”和“空”数组
2.4.1 非数NaN
2.4.2 “空”数组
2.5 关系操作和逻辑操作
2.5.1 关系操作
2.5.2 逻辑操作
2.5.3 常用逻辑函数
ch03_字符串、胞元和构架数组
第 3 章 字符串、胞元和构架数组
3.1 MATLAB的数据类型
3.2 字符串数组
3.2.1 串数组的属性和标识
3.2.2 复杂串数组的创建
1 多行字符串数组的创建
2 利用胞元数组创建复杂字符串
3.2.3 串转换函数
3.2.4 串操作函数
3.3 胞元数组
3.3.1 胞元数组的创建和显示
1 胞元标识寻访和内容编址寻访的不同
2 胞元数组的创建和显示
3.3.2 胞元数组的扩充、收缩和重组
3.3.3 胞元数组内容的获取和配置
3.3.4 胞元与数值数组之间的转换
3.3.5 对胞元数组运算的cellfun指令
3.3.6 胞元数组的操作函数汇总
3.4 构架数组
3.4.1 构架数组的创建和显示
1 直接创建法及显示
2 利用构造函数创建构架数组
3.4.2 构架数组域中内容的调取和设置
3.4.3 构架数组的扩缩、域的增删和域名重排
3.4.4 构架数组和胞元数组之间的转换
3.4.5 对构架域运算的structfun和arrayfun指令
3.4.6 构架数组的操作函数汇总
ch04_数值计算
第 4 章 数值计算
4.1 MATLAB的浮点数体系
4.2 数值微积分
4.2.1 数值极限
4.2.2 数值差分
4.2.3 数值积分(Numerical Integration)
1. 一元函数积分(Quadrature)
2. 样条法求一元数值积分
3. 用SIMULINK求一元数值积分
4.2.4 多重数值积分
1. 常限重积分
2. 变限重积分
4.3 矩阵分析
4.3.1 矩阵运算和特征参数
1. 矩阵运算
2. 矩阵的标量特征参数
4.3.2 奇异值分解和矩阵结构
1. 奇异值分解
2. 与奇异值相关的矩阵结构
4.4 特征值分解和矩阵函数
4.4.1 特征值分解问题
4.4.2 矩阵的谱分解和矩阵函数
4.5 解线性方程
4.5.1 求解线性方程的相关指令
4.5.2 线性方程矩阵除解法
4.5.3 线性二乘问题的解
4.5.4 一般代数方程的解
4.6 随机变量的产生及其特征描述
4.6.1 随机数的产生及重现控制
1. 默认全局随机流的简明管理指令
2. 三种基本随机数发生指令
3. 用户随机流的创建和使用
4. 随机流的重现控制
5. 独立随机数序列和随机流的产生
6. 随机数重现控制旧版指令的使用建议
4.6.2 数据样本分布可视化描述
4.6.3 随机分布的数字特征及其统计量
1. 随机分布的中心位置统计量
2. 随机分布的聚散度统计量
3. 斜度和峭度高阶统计量
4.7 多项式运算和卷积
4.7.1 多项式的运算函数
1. 多项式表达方式的约定
2. 多项式运算函数
4.7.2 卷积
1. 两有限长序列的卷积
2. 有限长序列与无限长序列的卷积
4.8 多项式拟合和非线性最小二乘
4.8.1 线性拟合和最小二乘
4.8.2 多项式拟合
4.8.3 非线性最小二乘拟合
1. 伪线性化处理
2. 非线性最小二乘拟合
4.9 插值和样条
4.9.1 一维插值
4.9.2 高维函数的插值
4.9.3 样条插值
4.9.4 样条函数的应用
1. 样条函数的微积分
2. 样条函数的零点和最小值
4.10 Fourier分析
4.10.1 快速Fourier变换和逆变换指令
4.10.2 连续时间函数的Fourier级数展开
1. 展开系数的积分求取法
2. Fourier级数与DFT之间的数学联系
3. MATLAB算法实现
4.10.3 利用DFT计算连续函数Fourier变换CFT
1. CFT与DFT之间的数学联系
2. MATLAB算法实现
4.11 常微分方程
4.11.1 常微分方程初值问题的解算
1. 求解初值问题的思路
2. 解算指令的调用格式
3. 解算指令的属性及其设置
4. 嵌套函数法传递解算参数
5. 匿名函数法传递解算参数
6. 带事件设置的微分方程解算
4.11.2 常微分方程的边值问题解
1. bvp4c求解边值问题的思路
2. 求解边值问题的配套指令
3. 求解含未知参数的边值问题
4.12 最小值优化问题
4.12.1 MATLAB最小值优化指令概述
4.12.2 单变量局域优化指令fminbnd
4.12.3 多变量无约束局域优化指令fminsearch
4.12.4 多变量约束局域优化指令fmincon
4.12.5 GlobalSearch实施的全域优化
ch05_符号计算
第 5 章 符号计算
5.1 符号对象的产生和识别
5.1.1 基本符号对象的创建
1 定义符号数字和符号常数
2 定义基本符号变量
3 定义元符号表达式
5.1.2 符号计算中的算符和函数指令
1 符号计算中的算符
2 符号计算中的函数指令
5.1.3 符号对象、变量、自由变量的识别
1 符号对象的识别
2 符号变量及自由变量的认定
5.1.4 符号运算机理和变量假设
1 符号运算的工作机理
2 对符号变量的限定性假设
3 清除变量和撤销假设
5.1.5 符号帮助及其他常用指令
1 符号运作的帮助体系
2 服务于符号运作的其他指令
5.2 数字类型转换及符号表达式操作
5.2.1 数字类型及转换
1 三种数字类型及转换指令
2 双精度数字向符号数字转换
3 符号数字向双精度数字转换
4 符号数字的任意精度表达形式
5.2.2 符号表达式的简化操作
5.2.3 表达式中的置换操作
1 公因子法简化表达
2 通用置换指令
5.3 符号微积分
5.3.1 极限和导数的符号计算
5.3.2 序列/级数的符号求和
5.3.3 符号积分
5.4 微分方程的符号解法
5.4.1 符号解法和数值解法的互补作用
5.4.2 求微分方程符号解的一般指令
5.4.3 微分方程符号解示例
5.5 符号变换和符号卷积
5.5.1 Fourier变换及其反变换
5.5.2 Laplace变换及其反变换
5.5.3 Z变换及其反变换
5.5.4 符号卷积
5.6 符号矩阵分析和代数方程解
5.6.1 符号矩阵分析
5.6.2 线性方程组的符号解
5.6.3 一般代数方程组的解
5.7 符号算法的综合应用
5.7.1 三维根轨迹和数据探索
5.7.2 代数状态方程求符号传递函数
1 结构框图的代数状态方程解法
2 信号流图的代数状态方程解法
3 多输入多输出系统传递矩阵的求取
5.8 符号计算结果的可视化
5.8.1 直接可视化符号表达式
1 单独立变量符号函数的可视化
2 双独立变量符号函数的可视化
5.8.2 符号计算结果的数值化绘图
5.8.3 可视化与数据探索
5.9 符号计算资源的数值环境应用
5.9.1 符号表达式、串操作及数值计算M码间的转换
5.9.2 符号工具包资源表达式转换成M码函数
1 转换指令matlabFunction
2 把符号包资源转换成M码函数的示例
3 把MuPAD资源转换为M码函数的示例
5.9.3 用符号表达式创建SIMULINK用户模块
1 转换指令emlBlock
2 把符号包资源转换为SIMULINK模块的示例
5.10 MuPAD资源的深层利用
5.10.1 借助mfun调用MuPAD特殊函数
5.10.2 直接调用MuPAD的函数
1 非mfunlist列表MuPAD函数的调用步骤
2 借助evalin运行MuPAD函数
3 借助feval运行MuPAD函数
ch06_数据可视及探索
第 6 章 数据可视及探索
6.1 引导
6.1.1 离散数据和离散函数的可视化
6.1.2 连续函数的可视化
6.1.3 可视化的一般步骤
1. 绘制二维图形的一般步骤
2. 绘制三维图形的一般步骤
6.2 二维线图及修饰操作
6.2.1 基本指令plot的调用格式
1. 基本调用格式
2. 衍生调用格式
3. 带属性设置的调用格式
6.2.2 坐标控制和图形标识
1. 坐标轴的控制
2. 分格线和坐标框
3. 图形标识指令
4. 标识字符的精细控制
6.2.3 多次叠绘、双纵坐标和多子图
1. 多次叠绘
2. 双纵坐标图
3. 多子图
6.3 三维绘图及修饰操作
6.3.1 三维线图指令plot3
6.3.2 三维曲面/网线图指令
1. 基本调用格式
2. 衍生调用格式
3. 色图colormap
4. 浓淡处理shading
6.3.3 视点控制和图形的旋动
1. 视点控制view
2. 图形旋动rotate
6.3.4 光照、材质和透视
1. 光照light
2. 材质处理material
3. 透明处理
6.3.5 消隐、镂空和裁切
1. 网线的消隐
2. 图形的镂空
3. 裁切
6.4 高维可视化
6.4.1 二维半图线
6.4.2 准四维表现
6.4.3 四维切片及等位线
6.5 动态图形
6.5.1 高层指令生成动态图形
1. 彗星状轨迹图
2. 色图的变幻
3. 影片动画
6.5.2 低层指令生成实时动画
6.6 特殊图形指令
6.6.1 彩色份额图
1. 面域图area
2. 直方图bar, barh, bar3, bar3h
3. 饼图pie, pie3
6.6.2 有向线图
6.6.3 多面体异形图
1. 德洛奈三角剖分和Voronoi图
2. 填色图fill,fill3
3. 不规则数据的网线图和曲面图
4. 彩带图ribbon
6.6.4 散点图scatter和plotmatrix
6.6.5 泛函绘图指令fplot
6.7 图象
6.7.1 图象的类别和显示
6.7.2 图象的读写
6.8 图形窗的编辑探索功能
6.8.1 图形窗的结构
1. 图形窗的功能分区
2. 图形窗工具条
3. 主要构件与对应菜单
6.8.2 指令鼠标混合操作生成绘图文件
6.8.3 数据探针
6.8.4 数据刷
6.8.5 数据链和数据联动
ch07_M文件和函数句柄
第 7 章 M文件和函数句柄
7.1 M码编程的基本构件
1 变量
2 运算及运算符
3 标点符号
4 关键词
5 特殊值
6 MATLAB函数
7 指令及指令行
7.2 MATLAB的数据流控制
7.2.1 for循环和while循环控制
1 循环结构的基本形式
2 辅助控制指令continue和break
7.2.2 if-elseif-else条件分支控制
7.2.3 switch-case切换多分支控制
7.2.4 try-catch容错控制
7.2.5 编程用的其他指令
1 return返回和pause暂定
2 error出错信息和warning警告
3 与键盘交互指令input 和 keyboard
7.3 M文件和P文件
7.3.1 M文件
1 M脚本文件
2 M函数文件
7.3.2 P码文件的创建、查询和清除
7.4 MATLAB的函数类别
7.4.1 主函数和子函数
1 主函数
2 子函数
7.4.2 匿名函数
1 匿名函数及其句柄的创建
2 匿名函数的调用
7.4.3 嵌套函数
1 嵌套函数的结构特点
2 调用规则
3 变量作用域
7.5 函数句柄
7.5.1 函数作用域和优先等级
7.5.2 函数句柄的创建
1 直接句柄创建法
2 匿名句柄创建法
7.5.3 函数句柄的调用格式
1 直接句柄调用格式
2 匿名句柄调用格式
7.5.4 观察函数句柄的内涵
7.6 泛函演算指令
7.6.1 eval
7.6.2 feval
7.6.3 内联对象
7.7 变量的使用域和跨内存交换
7.7.1 输入输出检测指令
7.7.2 “变长度”输入输出量
7.7.3 局域变量、全域变量和持存变量
1 局域变量
2 全域变量
3 持存变量
7.7.4 跨内存计算及赋值
1 跨内存计算串表达式
2 跨内存赋值
7.8 编辑调试器的应用深入
7.8.1 词串彩化和定界符匹配提示
1 词串彩化
2 定界符匹配提示
7.8.2 M-Lint 代码分析器
1 检测信息的界面静态标识
2 详细检测信息的鼠标动态获取
7.8.3 M文件调试器
1 直接调试法
2 交互式调试器的界面
3 调试器应用示例
ch08_Simulink交互式仿真
第 8 章 Simulink交互式仿真
8.1 引导
8.1.1 Simulink模型本质和一般结构
8.1.2 创建块图模型的方法和基本环境
8.2 连续系统建模
8.2.1 微分方程建模和积分模块
1 微分方程块图模型的创建和操作细节
2 创建微分方程的向量化块图模型
3 积分模块
8.2.2 状态空间建模
1 状态空间模块及其建模应用
2 模型内存和模型浏览器
8.2.3 传递函数建模及模型内存的操控
1 单位脉冲信号的近似实现
2 传递函数模块和非零初始系统建模
8.3 子系统和分层模型
8.3.1 创建简装子系统的套装法
8.3.2 创建简装子系统的容器法
8.3.3 精装子系统和装帧编辑器
8.4 使能触发子系统
8.4.1 使能子系统
1 子系统结构和工作原理
2 子系统非状态输出的两种形态
3 子系统状态输出的四种形态
8.4.2 触发子系统
1 子系统的结构和工作原理
2 子系统的三种触发方式
8.5 Simulink的控制流
8.5.1 For 环
8.5.2 While环
8.5.3 If-else条件转向和信号合成
8.6 离散时间系统和混合系统
8.6.1 单位延迟模块和差分方程建模
1 单位延迟模块
2 差分方程的标量法建模
3 差分方程组的向量建模法
8.6.2 离散积分模块和混合系统
1 离散时间积分模块
2 混合系统的s变量替换法
8.6.3 多速率系统的色彩标识
8.7 Simulink的分析工具
8.7.1 模型和模块信息的获取
1 模型状态及输入输出特征的获取
2 模型/模块参数的指令获知和设置
8.7.2 用Sim指令运行Simulink模型
1 运行块图模型的sim指令
2 sim指令的参数名/值设置法
3 sim指令的参数构架设置法
8.7.3 模型的线性化问题
1 线性化的数学描述
2 模型线性化
8.7.4 系统平衡点和普通状态轨线图
8.7.5 M码和Simulink模型的综合运用
1 单步仿真和精良状态轨线图
2 仿真模型和优化指令的协调
8.8 数值计算方面的考虑
8.8.1 微分方程解算器Solver
1 ode45和ode23运作机理简要
2 ode113运作机理简要
3 ode15s和ode23s运作机理简要
4 不同解算器解Stiff方程的表现
8.8.2 积分步长和容差
1 积分步长的选择
2 计算容差的选择
8.8.3 代数环问题
1 无惯性模块和代数环
2 消减代数环影响
8.9 S函数模块的创建和应用
8.9.1 S函数概述
8.9.2 S函数模块及其运作机理
1 开发S函数模块的一般步骤
8.9.3 M码S函数
1 两个级别的M码S函数
2 对二级M码S函数模版的注释
3 二级M码S函数模块设计示例
ch09_图形用户界面(GUI)
第 9 章 图形用户界面GUI
9.1 设计原则和一般步骤
9.1.1 设计原则
9.1.2 一般制作步骤
9.2 借助GUIDE创建GUI
9.2.1 GUIDE通览
1 GUIDE的启动
2 Preferences 设置对版面编辑器的影响
3 GUIDE的功能分区
4 待设计用户界面的性状预设
5 设计区的坐标参照和位置编排器
6 控件组件属性值的初始设置
7 创建界面的文件保存和再命名
9.2.2 控件的运作机理及创建
1 各控件的运作机理
2 常需设置的控件通用属性
9.2.3 GUI界面的创建示例
1 二阶系统阶跃响应演示界面
2 多指令输入的演示界面
9.2.4 界面菜单和工具图标的创建
1 标准菜单条和工具条的配置
2 定制菜单的创建和变量handles的观察
3 现场菜单创建和Tag属性应用
9.3 全手工编程创建GUI
9.3.1 采用M脚本文件创建用户界面
9.3.2 采用嵌套函数创建用户界面
D1_附录A_Notebook
附录A: Notebook
A.1 Notebook的配置和启动
A.1.1 Notebook的配置
A.1.2 Notebook的启动
1 创建新的M-book文件
2 打开已有的M-book文件
A.2 M-book模板的使用
A.2.1 输入细胞(群)的创建和运行
1 细胞(群)
2 基本操作
3 输入细胞(群)操作示例
A.2.2 Notebook菜单的其他选项
1 自初始化细胞及其应用
2 整个M-book文件的运行
3 删去M-book 文件所有输出细胞
A.2.3 输出细胞的格式控制
1 数据输出的表示形式控制
2 图形的嵌入控制
3 嵌入图形大小的控制
4 嵌入图形的背景色问题
A.3 使用M-book模板的若干注意事项
D2_附录B_光盘使用说明
附录B: 光盘使用说明
B.1 光盘文件的结构
B.2 关于光盘第一级目录和文件的说明
B.3 光盘对软件环境的要求
B.4 光盘文件的操作准备
B.5 mbook目录上DOC文件的使用
B.6 mfile目录上的M、MDL文件的使用
D3_附录C_索引
附录C: 索 引
C.1 MATLAB的标点及符号
算术运算符Arithmetic operators
关系运算符 Relational operators
逻辑运算符 Logical operators
特殊符号Special characters
C.2 MATLAB的函数及指令Functions and Commands
A a
B b
C c
D d
E e
F f
G g
H h
I i
J j , K k
L l
M m
N n
O o
P p
Q q
R r
S s
T t
U u
V v
W w
X x , Y y , Z z
C.3 SIMULINK的库模块
E_参考文献
内 容 简 介 本书由纸质媒体和电子媒体有机结合而成。纸质媒体便于读者进行系统、全面、长时间连续地阅读, 便于随心翻阅、浏览;而电子媒体向读者提供色彩信息和动态交互的软件环境,提供读者实践本书内容所 需的各种文件。 本书包含 MATLAB 使用和数学知识的丰富层次。编著本书有四个主要目的:(1) 帮助初学者顺利跨 入 MATLAB 大门;(2) 全面、多层次、细致而深入地叙述 MATLAB 中数值、字符串、胞元、构架、逻 辑、函数句柄六种重要数据类型的应用规则、相互配用和编程规范;(3) 由浅入深地阐述 MATLAB 三种 建模、分析、仿真环境——数值计算、符号计算和 Simulink 环境的特征和使用要领;(4) 以实例讲述 MATLAB 代表的现代计算能力对传统算法和思维的影响。 全书包含 276 个算例。所有算例的程序都是可靠、完整的。读者可以完整、准确地重现本书所提供的 算例结果,以掌握要领,举一反三,到达灵活应用的境地。 本书正文和算例所涉及的指令全部罗列在“附录 C 索引”中。该索引与目录组合,可为读者提供比较 完善的快速查阅环境。 随书光盘中包含:黑白纸质印刷版无法表现的各种彩色图形;用 Mbook 模板制作的“活性”的各章 DOC 文档;各算例运行所需的 M 文件和 MAT 数据文件;Simulink 块图模型的 MDL 文件;图形用户界面 的 FIG 文件。 本书既可作为理工科院校研究生、本科生系统学习的教材,又可以作为广大科技工作者借助 MATLAB 进行科学计算及仿真的自学和参考用书。 1
前 言 1. 编写背景 MATLAB(MATrix LABoratory)自 20 世纪 80 年代初问世以来,历经 30 年的实践检 验、市场筛选和时间凝炼,已成为科学研究、工程技术等众多领域最可信赖的科学计算环 境和标准仿真平台,成为高等教学必须传授的学习和计算软件,成为学术演讲、交流中实 验数据和曲线图形的来源。 近年我国经济发展迅猛,“便携式个人电脑 + MATLAB”的配置工具在高校、科研院 所以惊人的速度迅速普及。这使得理工科高校的每位师生、科研院所的每位研发人员都拥 有了前所未有的巨大“计算潜能”。原有的研究方法、设计程式、论文写作方式以及教学 内容等都必将受到这种新的“计算潜能”的巨大的冲击。 为缓和巨大计算潜能和原有教材之间的矛盾,国内外理工科高校教材几乎都作出了把 MATLAB 引进教材的努力。这种努力大致可分为两个层面。第一层面,完全不改变原有教 材内容,而仅把 MATLAB 作为“手算的替身”用于相关内容的算例习题解算。第二层面, 对原有教材中“那些手算所不能处理”的内容加以改变,而成为由 MATLAB 实施的新章节; 或把原教学大纲中“那些采用硬件设备进行”的实验改成 MATLAB 仿真。 MATLAB 对我国高等教学的影响,虽然比国外晚 10 年左右,但变化之迅速却远非欧 美所及。在几乎“人手一机”和 MATLAB 普及使用的高校里,无论是教师或学生,也不管 有意识思考还是无意识感受,都会时时面临一个共同的问题:拥有崭新电脑工具的我们还 有必要循着计算尺时代形成的模式去学习分析和综合设计吗? 硬件的低成本化、外界的需求又反过来推动 MATLAB 自身的改变和发展。近 30 年的 历练,MATLAB 已经从纯指令操作软件发展为在各种界面进行交互式操作的平台,从单纯 的分析、计算软件发展成为集计算、仿真、硬件开发于一体的综合环境,从单一学科辅助 工具扩展为多门类多学科的计算资源库。 2. 编写宗旨及特点 本书作者自 2000 年编写《精通 MATLAB 5.3 版》和 2003 年编写《精通 MATLAB 6.5 版 》以来,主要精力一直投入于以 MATLAB 为工具的控制、信号处理及智能计算等研究。 与此同时,随着 MATLAB 的不断升级,每年也为《精通》一书写些修订和增补文档,直接 服务于面向本校学生的 MATLAB 课程。在此七、八年期间,本书作者曾多次尝试《精通》 一书的修订,但终因时间不足,致半途而废。 2008 年秋,MATLAB 的默认符号计算引擎由 Maple 更换为 MuPAD。这一重大变化促 使本书作者下定“重写《精通》”的决心。此后,历时 2 年多,完成此书初稿,共 1150 页 (A4 版面)。这样大的篇幅令人尴尬。一方面,恐因篇幅过大,而束缚对内容深度与广度应 有的舒展;另方面,这千余页篇幅,无疑不便于读者使用。经与编辑多次商讨后,决心对 MATLAB 与 C、C++等外部程序关联的内容作“切除留后”处理,对 MATLAB“自封闭” 内容则进行了削枝强干的调整。 现在本书具有如下几个特点。  秉承《精通 MATLAB 6.5 版》的编写宗旨:全面地多层次地描述 MATLAB 的通用功能。 “全面及多层次”表现为:  本书对 MATLAB 本身的入门引导写得相当细腻,即使是对 MATLAB 一无所知的 读者,也可以循着本书的第 1 章,顺利跨入门槛。  对于那些不大熟悉数值、符号、Simulink 等计算、建模的读者来说,只要找到相关 章节,沿着若干初始算例树立的“路标”,循序渐进,就能很快通过自我学习获 得熟练运用的能力。  涉及 MATLAB 较深应用层面,如数值计算泛函指令的参数传递、符号变量的非负、 1
整数域约束及跨空间计算、Simulink 的信息流控制、图形用户界面回调函数编写等 内容,本书的阐述也都可以为读者解除困惑。  本书 276 个算例中的绝大多数都是相对独立的,都配有可实际运行的完整解算指 令。即使 MATLAB 新手,或对算例所涉及知识不甚了解的读者,只要循序操作算 例指令,并阅读指令后的相关解释,也能顺利实践,获得启发后,更可举一反三。 继续保持《精通 MATLAB 6.5 版》的编写传统:在避免囫囵吞枣的限度内,尽可能简 明完整地透析 MATLAB 指令、Simulink 模块的数学本质及其应用。例如:  依托有限差分、积分等章节的算例,揭示建立在“浮点数系”基础上的数值计算,  如何受“精度、空间、时间”等微观、宏观测度有限性的影响。  借助奇异值分解阐述秩、范、子空间等矩阵结构计算的数值本质,借助特征值分 解描述矩阵函数的计算本质。  鉴于 MATLAB R2011a 版关于随机流概念的系统归纳和 rng 新指令的给出,本书用 较多篇幅阐述了伪随机流、随机序列的创建、重现控制和独立性控制的多种方法。 此外,还简明描述了均值、偏差、斜度、峭度等统计量的几何意义及计算指令。  提出求取系统传递函数的代数方程符号法,此法不仅系统性强而不依赖“人工技 巧”,而且还原了梅逊信流图法的数学实质。  借助积分模块的两种不同数学表述,隐喻 Simulink 积分解算方式与数值积分指令 的本质差异——前者体现“时间流”,后者依赖“数据流”。  保持并延伸《精通 MATLAB 6.5 版》所涉内容的数学知识纵深度,多方位地适应 MATLAB 用户知识层面的深化和多样化。例如:  在数值积分方面,不仅介绍了 MATLAB“求面积、求体积”的 quad 类指令,而且 介绍了样条积分、Monte Carlo 积分、Simulink 积分的基本原理和实现方法。  在随机变量和数理统计方面,较大篇幅增添的内容有:全局随机流、随机序列的 创建、重现控制和独立性控制,三阶斜度、四阶峭度计算等。  在模型拟合和参数估计方面,新增内容——以多项式拟合为算例,描述了拟合参 数标准差及置信区间、新观察预测区间等。  在优化计算方面,不仅介绍了无约束优化计算,还新增了带约束优化计算及全域 寻优算法和思想。  推介 MATLAB 现代计算能力在方法学层面的新表现,描述这种现代计算能力对“计算 尺时代”遗留下来的传统概念、方法和技巧的审视和冲击。例如:  第 5.7.1 节利用代数方程求根的现代计算能力和 MATLAB 的图形表现力,直接根 据不同放大倍数下求得的闭环根序列,绘制“精良根轨迹”,并进而借助 MATLAB 提供的数据探索工具形象、互动地表现放大倍数与闭环根之间的依赖关系。这种 新方法概念清晰、操作简单、图形精准。值得指出的是:现今高校教材所教授的 传统根轨迹绘制法,乃是建立在“计算尺能力”之上的。  第 5.7.2 节利用求解符号代数方程的现代能力,直接求取“方框图”或“信流图” 的系统传递函数。该方法系统性、规范性及计算的简单性远胜于“计算尺时代” 的梅逊法。值得指出的是:梅逊法至今仍广泛地存在于我国高校的“信号与系统” “自动控制原理”等教材中。  第 5.8.3 节,借助 MATLAB 的图形表现力,绘制误差曲面,形象地展示了泰勒近 似的“邻域适用性”。  第 8.7.51 小节利用微分方程单步仿真法绘制“状态轨迹”,其对系统性状的描述 能力远强于“传统相轨迹”。这种单步状态轨线,不仅能精确地表现稳定平衡点 周围的速度场,而且能同样精确地表现不稳定平衡点周围的速度场。  第 8.7.52 小节利用数值优化指令求得的 ITAE 标准型系统的性能显然优于“模拟机 时代”给出的那些传统 ITAE 标准型系统。  本书特别在第 6.8 节新增 3 小节用于表述 MATLAB 的交互式数据探索工具:数据 探针、数据刷和数据链。而算例 5.7.1 则综合地表现了数据探索工具的具体应用。  算例 4.53、4.121、4.123 分别表现了 MATLAB 图形能力在非线性方程求解、单变 量寻优、带约束二元函数寻优等方面的应用价值。  本书第 9 章详细叙述了对研究方法有重大影响的图形用户界面(GUI)的制作方法。 2
该章算例 9.21 展示了 GUI 表现二阶系统阶跃响应各种特征时所特有的能力。  此外,也对原《精通 MATLAB 6.5 版》少部分内容进行了删减。  完全删去原书中的“MATLAB 编译器”、“应用程序接口 API”两章。原因是: 一,避免因篇幅限制,使其内容显得肤浅;二,避免因外部程序变化,使其内容 不稳定。  删除原书中“句柄图形”一章。原因是:一,各种图形对象的属性,现已可在 MATLAB 图形窗中便捷地读取和设置;二,部分常用的图形对象属性的指令设置内容已被 融入新书的其他章节。  原书中“Notebook”一章,精简后以附录形式出现。 3. 内容简介 全书由目录、正文、附录和随书光盘组成。正文共 9 章。  第 1 章基础准备及入门 详细讲述 MATLAB 的工作平台、基本特征和使用方法,讲授如何借助 MATLAB 的帮 助系统解决所遇到的困难。任何 MATLAB 新手借助本章都可以比较顺利地跨入 MATLAB 门槛。  第 2 章数值数组及向量化运算 介绍 MATLAB 的两个数据类型(数值数组、逻辑数组),两个特有变量(“非数”及 “空”),两个 MATLAB 指令及编程特征(数组运算和向量化编程)。其中数值数组创建、 编址、援引寻访、扩展收缩等所涉的概念和技法也适用于其他数据类型数组。  第 3 章字符串、胞元和构架数组 集中介绍字符串、胞元、构架三种数据类型的创建、特点及相互转换。掌握这些数据 类型有助于理解 MATLAB(方程求解、优化)泛函指令、图形对象、Simulink 模型模块等 的参数设置和使用。  第 4 章数值计算 集中描述 MATLAB 的数值计算能力,其节次按数学类别划分。所涉数学理论知识大致 涵盖理工科本科及研究生知识层面。每个算例都会简明地勾勒问题的来龙去脉,帮助读者 克服由于理论数学、计算数学、MATLAB 指令间的知识跳跃和交叉引起的困惑。  第 5 章符号计算 MATLAB 由数值计算引擎驱动,其随带的符号计算引擎是 MuPAD。本章内容完全适 配 MuPAD 引擎。该章的解题理念、建模计算、结果表述等都不同于数值计算,而与传统 教科书的理论内容相似,因此学生更容易接受并使用。因为该章内容相对独立,所以在内 容设计上,安排了从简单入门到跨空间进入 MuPAD 环境的多层次节次。  第 6 章数据可视及探索 系统阐述离散数据绘制成图的基本机理、基本技法、绘图指令的调用和搭配。介绍 MATLAB 图形窗所具备的“数据——图形双向交互能力”,推介 MATLAB 最新体现的“交 互式数据探索”研究方法。  第 7 章 M 文件和函数句柄 系统介绍 MATLAB 编程的基本构件、数据流控制、各类子函数、两种函数句柄、泛函 计算指令、跨空间调用和赋值等内容,为编写较复杂程序读者所必读。  第 8 章 Simulink 交互仿真环境 Simulink 的建模、解算、结果表述既不同于数值计算,也不同于符号计算,相对独立, 由浅入深层次分明。第一个算例,非常详尽地描写 Simulink 的交互式建模步骤、操作要领、 注意事项,以使新手可循此例而入门。其他节次则涉及构造并运作复杂 Simulink 模型所必 需的各种连续和离散模块,各种条件控制子系统,各种操作指令。  第 9 章图形用户界面(GUI) 重点介绍 GUI 的 GUIDE 辅助设计法。算例 9.21 的细腻叙述,足以帮助对 GUI 完全陌 生的读者,初步掌握创建图形用户界面的全部操作要领。该章内容的重要性在于:GUI 不 仅使研发过程友善、结果表现形象生动,而且有孕育新研发技术和思维方式的潜能。 附录共 3 个。 3
 附录 A Notebook 简扼介绍 Notebook 工作环境的创建、组织及应用。该附录将有助于读者创建集文字表 述、数学公式、解算指令、计算结果、图形表现于一体的学术演讲稿、教学课件、科研报 告、学位论文等。  附录 B 光盘使用说明 专为随书光盘编写,主要用于:说明光盘 mbook 目录上所载 DOC 文件的开启环境和使 用方法;说明光盘 mfile 目录上 M、MDL 文件的使用。  附录 C 索 引 根据英文字母排列次序,列出了本书叙述文字或算例中所涉及的所有符号、指令、模 块和图形对象属性的“英文关键词(或符)”。读者借助该“索引”,可以由“英文关键 词(或符)”找到相关的中文说明或使用算例。 4. 读者对象 MATLAB 自身性质决定了本书的主要读者对象是:需要数学建模、研究分析、理论验 证、计算机仿真的各类大学生、研究生、教师和科研人员。 本书的章节安排、各章内容、276 个算例是作者根据 MATLAB 所跨数学及程序语言两 大范畴的内涵融合而成的。与一般程序语言类书籍相比,本书的特点在于:包含了较大篇 幅的理论数学、计算数学及其他专业基础方面的理论描述。而与一般的数学教材、计算方 法书籍相比,不同之处又在于:本书并不停留于纯推理性阐述,而特别注重于表述完成计 算任务的 MATLAB 指令的使用要旨及注意事项。因此,本书可以用作为 MATLAB 编程、 数学建模、科学计算、数字仿真的综合教学用书和科研参考书。 本书在讲述数值建模、符号建模、Simulink 建模、及 GUI 制作等内容时,都专门设计 了操作步骤及引导性算例(所涉工具介绍得特别详细),用以帮助初学者顺利地入门,并 使他们在阅读指令的注解说明后,可以举一反三。因此,本书也可以供各类研发人员自学 使用。 除显而易见的简单算例外,本书作者在设计和编写算例时,尽力在理论和编程两方面 保持各算例的独立性和完整性,以供各类读者根据需要随时片段地翻阅,掌握具体的算法 和指令配合。换句话说,像字典一样,本书可用作查阅算法或 MATLAB 具体指令调用方法 的“手册”。 5. 使用建议  本书用于教学时,教师可参考本书章节次序安排教学进程。讲授时,不建议使用 PowerPoint 形式的课件,而建议采用 Notebook 制作的课件。这是因为,后者可以让听 课的学生在 Word 文字环境中看到 MATLAB 指令的实时操作和现场显示出的数值或图 形结果。本书为教师制作课件方便,在随书光盘里,提供了保持全书章节结构、算例 可运行 M 码的电子文档。  本书用于系统自学时,读者可不必循序阅读,也不建议通读。建议先认真阅读并实践 入门性算例,而不必强求自己去操练那些数学知识过深或编程过于复杂的算例。此外, 再次诚恳地建议:不要采用“复制随书光盘中现成 M 码”的方法,去实践本书算例, 而应采用“自己键入”的方式去实践,以体会编写程序的思路和过程。  本书用作“手册”查阅参考时,读者应注意目录、索引、英文关键词的不同检索功用。 目录用于“可能模糊的内容”检索;索引用于“已知指令名称”的交叉检索;(本书 中出现的)英文关键词专供 MATLAB 帮助浏览器信息的检索使用。  本书所有算例的 M 码都是可靠且可运行的,所有算例结果也都是可重现的。至于那些 无法通过纸质书籍表现的 Simulink 模型代码和彩色图形,读者都可以在随书光盘中找 到相应的 MDL 文件或电子文档。  随书光盘中,还存放有与《精通 MATLAB 6.5 版》相配的电子文档,以供读者不时之 需。 6. 致 谢 4
本书是作者长年科研和教学积累的结果。本书的成稿得到张昀、阮秀凯、靳种宝、李 娟娟、胡丽珍、谢逢博、冯子豪、王贵银、张传飞、朱捷、钱建平、江洁、蒋啸、王担担、 张蓉等博士和硕士研究生的帮助和支持,得到我始终一贯的合作者杨祖樱教授的全力支持。 借本书出版之际,向他们表示真诚的感谢。 最后还要感谢北京航空航天大学出版社长期一贯的支持和合作。 本书虽几经反复筛选提炼,但限于作者知识,赘病、错误和偏见仍难避免。在此,恳 切各方面专家和广大读者的不吝指教。作者电子信箱:zyzh@njupt.edu.cn 。 作 者 5
第 1 章 基础准备及入门 1.1 MATLAB 的安装和工具包选择 1.2 Desktop 操作桌面的启动 1.2.1 1.2.2 MATLAB 的启动 Desktop 操作桌面简介 图 1.2-1 Desktop 操作桌面的外貌 1.3 Command Window 运行入门 1.3.1 Command Window 指令窗简介 1
图 1.3-1 几何独立的指令窗 1.3.2 最简单的计算器使用法 的算术运算结果。 【例 1.3-1】求 (1) >> (12+2*(7-4))/3^2 (2) ans = 2 〖说明〗 【例 1.3-2】“续行输入”法。本例演示:或由于指令太长,或出于某种需要,输入指令行 必须多行书写时,该如何处理。 S=1-1/2+1/3-1/4+ ... 1/5-1/6+1/7-1/8 S = 0.6345 〖说明〗 1.3.3 数值、变量和表达式 数值的记述 变量命名规则 MATLAB 默认的数学常数 1 2 3 预定义变量 含 义 预定义变量 含 义 表 1.3-1 MATLAB 为数学常数预定义的变量名 2 23)]47(212[
分享到:
收藏