真正的MATLAB入门书、进阶、实践一本通
美国MathWorks公司推荐用书
《MATLAB R2012a 完全自学一本通》结构严谨、内容全面、图文并茂、实例丰富,既适合信号处理、通信工程、自动控制、机械电子、自动化、电力电气等专业的本科生、研究生、教师和科技工作者学习使用,也可以作为广大MATLAB爱好者的自学用书。
《MATLAB R2012a 完全自学一本通》面向MATLAB的初中级读者,在介绍MATLAB R2012a集成环境的基础上,对MATLAB使用中常用的知识和工具进行了详细的介绍,书中各章均提供了大量有针对性的算例,供读者实战练习。 根据内容的侧重点不同,全书分为20章:第1~5章为基础部分,讲解MATLAB概述、数学计算基础知识、数组和矩阵、编程基础及数据的可视化等;第6~8章为数学应用部分,讲解数据分析与处理、符号数学计算和概率统计等;第9~15章为工程应用部分,讲解偏微分方程、优化、图像处理、信号处理、小波分析等工具箱、Simulink基础及应用等;第16~20章为知识拓展部分,讲解句柄图形、GUI编程、文件I\/O、编译器和应用程序接口等内容。为了使用户能够更好地操作MATLAB,本书中示例的命令都记录在M文件及其他相关文件中,用户可以将相关的目录设置为工作目录,直接使用M文件进行操作,以便快速掌握MATLAB的使用方法。
Simulink是MATLAB系列工具软件包中最重要的组成部分。它能够对包括连续系统、离散系统及连续离散的混合系统进行充分的建模与仿真;能够借助其他工具直接从模型中生成可以直接投入运行的执行代码;可以仿真离散事件系统的动态行为;在众多专业工具箱的帮助下完成诸如DSP、电力系统等专业系统的设计与仿真。
4.1.1 Simulink的基本概念
Simulink是一个进行动态系统建模、仿真和综合分析的集成软件包。它可以处理的系统包括:线性、非线性系统;离散、连续及混合系统;单任务、多任务离散事件系统。
在Simulink提供的图形用户界面GUI上,只要进行鼠标的简单拖拉操作就可构造出复杂的仿真模型。它外表以方块图形呈现,且采用分层结构。从建模角度讲,这既适于自上而下(Top—down)的设计流程(概念、功能、系统、子系统、直至器件),又适于自下而上(Bottum-up)的逆程设计。
从分析研究角度讲,这种Sinmlink模型不仅能让用户知道具体环节的动态细节,而且能让用户清晰地了解各器件、各子系统、各系统间的信息交换,掌握各部分之间的交互影响。
在Simulink环境中,用户将摆脱理论演绎时需做理想化假设的无奈,观察到现实世界中摩擦、风阻、齿隙、饱和、死区等非线性因素和各种随机因素对系统行为的影响。在Simulink环境中,用户可以在仿真进程中改变感兴趣的参数,实时地观察系统行为的变化。
Simulink的每个模块对于用户来说都相当于一个“黑匣子”,用户只需知道模块的输入和输出及模块功能即可,而不必管模块内部是怎么实现的。
因此,用户使用Simulink进行系统建模的任务就是如何选择合适的模块并把他们按照自己的模型结构连接起来,最后进行调试和仿真。如果仿真结果不满足要求,可以改变模块的相关参数再运行仿真,直到结果满足要求为止。至于在仿真时各个模块是如何执行的、各模块间是如何通信的、仿真的时间是如何采样的及事件是如何驱动的等细节问题,用户都不用去管,因为这些事情Simulink都解决了。如何添加和删除模块、如何连接各个模块及如何修改模块的参数和属性等问题在本章后面的各小节会陆续给予详细的介绍。
1.模块与模块框图 Simulink模块框图是动态系统的图形显示,由一组称为模块的图标组成,模块之间的连接是连续的。每个模块代表了动态系统的某个单元,并且产生输出宏。模块之间的连线表明模块的输入端口与输出端口之间的信号连接。
模块的类型决定了模块输出与输入、状态和时间之间的关系;一个模块框图可以根据需要包含任意类型的模块。
模块代表了动态系统功能单元,每个模块包括一组输入、状态和一组输出等几个部分,模块的输出是仿真时间、输入或状态的函数。
模块中的状态是一组能够决定模块输出的变量,一般当前状态的值决定于以前时刻的状态值或输入,这样,具有状态变化的模块就必须存储以前时刻的输入或状态值,这样的模块称为记忆功能模块。
例如Simulink的积分(Integrator)模块就是典型的记忆功能模块。模块当前的输出是该模块从仿真开始到当前时刻这一时间段内输入信号的积分。
当前时刻的积分取决于历史输入,因此积分就是该模块的一组状态变量。另一个典型的例子就是Simulink中的单纯记忆(Memory)模块,该模块能够存储当前时刻的输入值并在将来的某个时刻进行输出。
Simulink的增益(Gain)模块是无状态变量的典型例子。增益模块的输出完全由当前的输入值决定,因此不存在状态变量。其他的无状态变量的模块还有求和模块(sum)和点乘模块(Product)等。
……
第1章 MATLAB R2012A概述
1.1 MATLAB R2012a简介
1.1.1 MathWorks及其产品概述
1.1.2 MATLAB的发展历史
1.1.3 MATLAB与其他数学软件
1.1.4 MATLAB的主要特点
1.1.5 MATLAB的系统组成
1.1.6 MATLAB工具箱简介
1.1.7 MATLAB R2012a新特性
1.2 MATLAB R2012a的安装与卸载
1.2.1 系统要求
1.2.2 安装过程
1.2.3 MATLAB 的卸载
1.3 MATLAB R2012a的目录结构
1.4 MATLAB R2012a的工作环境
1.4.1 Start按钮
1.4.2 菜单栏
1.4.3 工具栏
1.4.4 命令窗口(Command Window)
1.4.5 工作空间(Workspace)
1.4.6 命令历史窗口(Command History)
1.5 MATLAB R2012a的通用命令
1.6 MATLAB R2012a的文件管理
1.6.1 当前目录浏览器和路径管理器
1.6.2 搜索路径及其设置
1.7 MATLAB R2012a的帮助系统
1.7.1 纯文本帮助
1.7.2 演示(Demos)帮助
1.7.3 帮助导航浏览器
1.8 MATLAB使用初步
1.9 本章小结
第2章 MATLAB基础知识
2.1 数据类型
2.1.1 数值类型
2.1.2 逻辑类型
2.1.3 字符和字符串
2.1.4 函数句柄
2.1.5 结构体类型
2.1.6 单元数组类型
2.1.7 单元数组类型(cell)
2.1.8 map容器类型
2.2 基本矩阵操作
2.2.1 矩阵和数组的概念及其区别
2.2.2 矩阵的构造
2.2.3 矩阵大小及结构的改变
2.2.4 矩阵下标引用
2.2.5 矩阵信息的获取
2.2.6 矩阵的保存和加载
2.3 运算符
2.3.1 算术运算符
2.3.2 关系运算符
2.3.3 逻辑运算符
2.3.4 运算优先级
2.4 字符串处理函数
2.4.1 字符串的构造
2.4.2 字符串比较函数
2.4.3 字符串查找和替换函数
2.4.4 字符串--数值转换
2.5 本章小结
第3章 数组与矩阵
3.1 数组运算
3.1.1 数组的创建和操作
3.1.2 数组的常见运算
3.2 矩阵操作
3.2.1 创建矩阵
3.2.2 改变矩阵大小
3.2.3 重构矩阵
3.3 矩阵元素的运算
3.3.1 矩阵加减运算
3.3.2 矩阵乘法运算
3.3.3 矩阵的除法运算
3.3.4 矩阵的幂运算
3.3.5 矩阵元素的查找
3.3.6 矩阵元素的排序
3.3.7 矩阵元素的求和
3.3.8 矩阵元素的求积
3.3.9 矩阵元素的差分
3.4 矩阵运算
3.4.1 矩阵分析
3.4.2 矩阵分解
3.4.3 特征值和特征向量
3.5 稀疏矩阵
3.5.1 稀疏矩阵的存储方式
3.5.2 稀疏矩阵的生成
3.5.3 稀疏矩阵的运算
3.6 本章小结
第4章 MATLAB编程基础
4.1 M文件编辑器
4.2 变量
4.2.1 变量的命名
4.2.2 变量的类型
4.2.3 MATLAB默认的特殊变量
4.2.4 关键字
4.3 MATLAB的控制流
4.3.1 顺序结构
4.3.2 if-else-end分支结构
4.3.3 switch-case
4.3.4 try-catch结构
4.3.5 for循环结构
4.3.6 while循环结构
4.4 控制程序流的其他常用指令
4.4.1 return指令
4.4.2 input和keyboard指令
4.4.3 yesinput指令
4.4.4 pause指令
4.4.5 continue指令
4.4.6 break指令
4.4.7 error和warning指令
4.5 脚本和函数
4.5.1 脚本
4.5.2 函数
4.5.3 M文件的一般结构
4.5.4 匿名函数、子函数、私有函数与私有目录
4.5.6 重载函数
4.5.7 eval、feval函数和内联函数
4.5.8 内联函数
4.5.9 向量化和预分配
4.5.10 函数的函数
4.5.11 P码文件
4.6 M文件中变量的检测与传递
4.6.1 输入\/输出变量检测指令
4.6.2 "可变数量"输入\/输出变量
4.6.3 跨空间变量传递
4.7 MATLAB程序的调试
4.7.1 程序调试的基本概念
4.7.2 直接调试法
4.7.3 使用调试函数进行调试
4.7.4 工具调试法
4.7.5 程序的性能优化技术
4.8 小结
第5章 数据可视化
5.1 图形绘制
5.1.1 离散数据及离散函数
5.1.2 连续函数
5.1.3 图形绘制示例
5.1.4 图形绘制的基本步骤
5.2 二维图形绘制
5.2.1 plot指令
5.2.2 格栅
5.2.3 文字说明
5.2.4 线型、标记和颜色
5.2.5 坐标轴设置
5.2.6 图形迭绘
5.2.7 子图绘制
5.2.7 交互式绘图
5.2.8 双坐标轴绘制
5.2.9 fplot绘图指令
5.2.10 explot绘图指令
5.2.11 特殊坐标轴绘图
5.2.12 二维特殊图形函数
5.3 三维图形绘制
5.3.1 曲线图绘制
5.3.2 网格图绘制
5.3.3 曲面图的绘制
5.3.4 光照模型
5.3.5 绘制等值线图
5.4 四维图形可视化
5.4.1 用颜色描述第四维
5.4.2 其他函数
5.5 本章小结
第6章 数据分析
6.1 多项式及其函数
6.1.1 多项式的表达式和创建
6.1.2 多项式求根
6.1.3 多项式的四则运算
6.1.4 多项式的导数、积分与估值
6.1.5 多项式运算函数及操作指令
6.1.6 有理多项式
6.2 数据插值
6.2.1 一维插值
6.2.2 二维插值
6.3 函数的极限
6.3.1 极限的概念
6.3.2 求极限的函数
6.4 函数数值积分
6.4.1 数值积分问题的数学表述
6.4.2 一元函数的数值积分
6.4.3 多重数值积分
6.5 本章小结
第7章 符号数学计算
7.1 MATLAB符号计算概述
7.2 符号对象和符号表达式
7.2.1 符号对象的创建命令
7.2.2 符号对象的创建示例
7.2.3 符号计算中的运算符和函数
7.2.4 符号对象的类别识别函数
7.2.5 符号表达式中的变量确定
7.2.6 符号精度计算
7.3 符号表达式操作
7.3.1 符号表达式显示
7.3.2 符号表达式合并
7.3.3 符号表达式展开
7.3.4 符号表达式嵌套
7.3.5 符号表达式分解
7.3.6 符号表达式化简
7.4 符号表达式替换
7.4.1 subs替换函数
7.4.2 subexpr替换函数
7.5 符号函数的操作
7.5.1 复合函数操作
7.5.2 反函数操作
7.6 符号微积分
7.6.1 符号表达式的极限
7.6.2 符号表达式的微分
7.6.3 符号表达式的积分
7.6.4 符号表达式的级数求和
7.6.5 符号表达式的泰勒级数
7.7 符号积分变换
7.7.1 傅里叶变换及其反变换
7.7.2 拉普拉斯变换及其反变换
7.7.3 Z变换及其反变换
7.8 符号代数方程求解
7.9 符号微分方程求解
7.10 符号分析可视化
7.10.1 funtool分析界面
7.10.2 taylortool分析界面
7.11 本章小结
第8章 概率统计
8.1 产生随机变量
8.1.1 二项分布的随机数据的产生
8.1.2 正态分布的随机数据的产生
8.1.3 常见分布的随机数产生
8.2 概率密度计算
8.2.1 通用函数概率密度值
8.2.2 专用函数概率密度值
8.3 累积概率分布
8.3.1 通用函数累积概率值
8.3.