第1章 MATLAB应用基础
1.1 MATLAB简介
MATLAB (Matrix Laboratory,矩阵实验室)是由美国The MathWorks公司于1984年推出的一种科学与工程计算语言,它广泛地应用于自动控制、数学运算、信号分析、计算机技术、图像信号处理、财务分析、航天工业、汽车工业、生物医学工程、语音处理与雷达工程等各行各业。20世纪80年代初,MATLAB的创始人Cleve Moler博士在美国新墨西哥州立大学讲授线性代数课程时,构思并开发了MATLAB。后来,Moler博士等一批数学家与软件学家组建了The MathWorks软件开发公司,专门扩展并开发MATLAB。这样MATLAB就于1984年推出了第一个商业版本,到2005年,MATLAB已经发展到了版本7.1。
作为目前国际上最流行、应用最广泛的科学与工程计算软件,MATLAB具有其独树一帜的优势和特点。
(1)简单易用的程序语言。尽管MATLAB是一门编程语言,但与其他语言(如C语言)相比,它不需要定义变量和数组,使用更加方便,并具有灵活性和智能化的特点。用户只要具有一般的计算机语言基础,很快就可以掌握它。
(2)代码短小高效。MATLAB程序设计语言集成度高,语言简洁。对于用C/C++等语言编写的数百条语句,若使用MATLAB编写,几条或几十条就能解决问题,而且程序可靠性高,易于维护,可以大大提高解决问题的效率与水平。
(3)功能丰富,可扩展性强。MATLAB软件包括基本部分和专业扩展部分。基本部分包括矩阵的运算和各种变换、代数与超越方程的求解、数据处理与数值积分等,可以充分满足一般科学计算的需要。专业扩展部分称为工具箱(Toolbox),用于解决某一方面和某一领域的专门问题。MATLAB的强大功能在很大程度上都来源于它所包含的众多工具箱。大量实用的辅助工具箱适合具有不同专业研究方向及工程应用需求的用户使用。
(4)出色的图形处理能力。MATLAB提供了丰富的图形表达函数,可以将实验数据或计算结果用图形的方式表达出来,并可以将一些难以表达的隐函数直接用曲线绘制出来;不仅可以方便灵活地绘制一般的一维、二维图像,还可以绘制工程特性较强的特殊图形。另外,MATLAB还允许用户使用可视化的方式编写图形用户界面(Graphical User Interface, GUI),其难易程度与Visual Basic相仿,从而使用户可以容易地应用MATLAB编写通用程序。
(5)强大的系统仿真功能。应用MATLAB最重要的软件包之一——Simulink提供的面向框图的建模与仿真功能,可以很容易地构建系统的仿真模型,准确地进行仿真分析。Simulink模块库的模块集允许用户在一个GUI框架下对含有控制环节、机械环节和电子/电机环节的系统进行建模与仿真,这是目前其他计算机语言无法做到的。
现在的MATLAB已经不仅仅是一个“矩阵实验室”了,而称为一种具有广泛应用前景的全新的计算机高级编程语言。特别是图形交互式仿真环境——Simulink的出现,为MATLAB的应用拓宽了更广阔的空间。图1.1.1 即为MATLAB及其产品系列示意图。
图1.1.1 MATLAB及其产品系列示意图
MATLAB在我国的应用已经有十多年的历史,而自动控制则是其最重要的应用领域之一,自动控制的建模、分析、设计及应用都离不开MATLAB的支持。本章基于MATLAB 7.1,详细介绍MATLAB在控制系统的数学建模、运动响应分析、运动性能分析和系统校正中的应用。
1.1.1 操作界面介绍
MATLAB 7.1含有大量的交互工作界面,包括通用操作界面、工具包专用界面、帮助界面及演示界面等。所有的这些交互工作界面按一定的次序和关系被链接在一个高度集成的工作界面MATLAB Desktop中。图1.1.2所示为默认的MATLAB桌面。桌面上层铺放着三个最常用的窗口:命令窗口(Command Window)、当前目录浏览器(Current Directory)和历史命令窗口(Command History)。在默认情况下,还有一个只能看见窗口名称的工作空间浏览器(Workspace),它被铺放在桌面下层。另外,MATLAB 6.5及以上版本还在桌面的左下角增加了Start(开始)按钮。
MATLAB通用操作界面是MATLAB交互工作界面的重要组成部分,涉及内容很多,这里仅介绍最基本和最常用的8个交互工作界面。
1.命令窗口(Command Window)
命令窗口默认情形下出现在MATLAB界面的右侧,是进行MATLAB操作的最主要的窗口。在命令窗口中可输入各种MATLAB命令、函数和表达式,并显示除图形以外的所有运算结果。
2.历史命令窗口(Command History)
历史命令窗口默认情形下出现在MATLAB界面的左下侧,用来记录并显示已经运行过的命令、函数和表达式,并允许用户对其进行选择、复制、重运行和产生M文件。
图1.1.2 默认的MATLAB 7.1桌面
3.当前目录浏览器(Current Directory)
当前目录浏览器默认情形下出现在MATLAB界面的左上侧的前台,用来设置当前目录,可以随时显示当前目录下的.m、.mdl等文件的信息,并可以复制、编辑和运行M文件及装载MAT数据文件等。
4.工作空间浏览器(Workspace)
工作空间浏览器(又称为内存浏览器窗口)默认情形下出现在MATLAB界面的左上侧的后台,用于显示所有MATLAB工作空间中的变量名、数据结构、类型、大小和字节数。在该窗口中,可以对变量进行观察、编辑、提取和保存。
5.数组编辑器(Array Editor)
在默认情况下,数组编辑器不随操作界面的出现而启动。只有在工作空间窗口中选择数值、字符变量,双击该变量时才会出现数组编辑器窗口,并且该变量会在窗口中显示。用户可以直接在数组编辑器窗口中修改打开的数组,通过设置可以改变数据结构和显示方式。
6.开始按钮(Start)
启动MATLAB后,可以在MATLAB桌面的左下角看见一个Start图标按钮,这是在MATLAB 6.5及以上版本中新增加的开始按钮。单击按钮,显示的下拉菜单中列出了已安装的各类MATLAB组件和桌面工具。
7.M文件编辑/调试器(Editor/Debugger)
在默认情况下,M文件编辑/调试器不随操作界面的出现而启动,只有需要编写M文件时才启动窗口。M文件编辑/调试器不仅可以编辑M文件,而且可以对M文件进行交互式调试;不仅可以处理带.m扩展名的文件,而且可以阅读和编辑其他ASCII码文件。
8.帮助导航/浏览器(Help Navigator/Browser)
在默认情况下,帮助导航/浏览器不随操作界面的出现而启动。该浏览器详尽展示了由超文本写成的在线帮助。
1.1.2 帮助系统
MATLAB帮助系统包括命令行帮助、联机帮助和演示帮助。
1.命令行帮助
命令行帮助是一种“纯文本”的帮助方式。MATLAB的所有命令、函数的M文件都有一个注释区。在注释区中,用纯文本形式简要地叙述了该函数的调用格式和输入/输出变量的含义。该帮助内容最原始,但也最真切可靠。每当MATLAB不同版本中的函数文件发生变化时,该纯文本帮助也跟着同步变化。
语法:
help %列出所有主要的帮助主题,每个帮助主题与MATLAB搜索路径的一个目录名相对应 help主题 %给出指定某主题的帮助,主题可以是函数、目录或局部路径
示例如下:
>> help bode BODE Bode frequency response of LTI models. BODE (SYS) draws the Bode plot of the LTI model SYS (created with either TF, ZPK, SS, or FRD).The frequency range and number of points are chosen automatically. BODE (SYS, {WMIN, WMAX}) draws the Bode plot for frequencies between WMIN and WMAX (in radians/second). BODE (SYS, W) uses the user-supplied vector W of frequencies, in radian/second, at which the Bode response is to be evaluated. See LOGSPACE to generate logarithmically spaced frequency vectors. BODE (SYS1, SYS2, ..., W) graphs the Bode response of multiple LTI models SYS1, SYS2, ...on a single plot. The frequency vector W is optional. You can specify a color, line style, and marker for each model, as in bode (sys1, ' r' , sys2, ' y--' , sys3, ' gx'). [MAG, PHASE] = BODE (SYS, W) and [MAG, PHASE, W] = BODE (SYS) return the response magnitudes and phases in degrees (along with the frequency vector W if unspecified). No plot is drawn on the screen. If SYS has NY outputs and NU inputs, MAG and PHASE are arrays of size [NY NU LENGTH (W)] where MAG (:, :, k) and PHASE (:, :, k) determine the response at the frequency W (k). To get the magnitudes in dB, type MAGDB = 20*log10(MAG). For discrete-time models with sample time Ts, BODE uses the transformation Z = exp (j*W*Ts) to map the unit circle to the real frequency axis. The frequency response is only plotted for frequencies smaller than the Nyquist frequency pi/Ts, and the default value 1 (second) is assumed when Ts is unspecified. See also BODEMAG, NICHOLS, NYQUIST, SIGMA, FREQRESP, LTIVIEW, LTIMODELS.
2.联机帮助
通过单击工具栏上的 图标,或者选择菜单Help→MATLAB Help,或单击MATLAB左下角的Start按钮选择Help选项,或者在命令窗口中输入Helpwin命令,可打开MATLAB的帮助导航/浏览器,如图1.1.3所示。该浏览器是MATLAB专门设计的一个独立帮助子系统,由帮助导航(Help Navigator)和帮助浏览器(Help Browser)两部分组成。
图1.1.3 帮助导航/浏览器界面
3.演示帮助
MATLAB及其工具箱都有很好的演示程序,即Demos,其交互界面如图1.1.4所示。Demos演示界面操作非常方便,为用户提供了图文并茂的演示实例。
图1.1.4 演示帮助界面
打开Demos有以下两种方法:
(1)在MATLAB命令窗口中运行demo或demos命令。
(2)选择菜单项Help→Demos,或者单击Start按钮并从出现的菜单中选择Demos选项。
4.Web帮助
MathWorks公司提供了技术支持网站,通过该网站用户可以找到相关的MATLAB产品介绍、使用建议、常见问题解答和其他MATLAB用户提供的应用程序。
方法如下:
(1)其网址为http://www.mathworks.com或http://www.mathworks.cn。
(2)选择菜单Help→Web Resources中的子选项。
5.PDF帮助
MATLAB还以便携式文档格式(Portable Document Format, PDF)的形式提供了详细的MATLAB使用文档。PDF文件存放在matlab71/help/pdf-doc文件夹中。用户还可以从The MathWorks公司的官方网站下载。
1.1.3 工具箱
工具箱实际上是用MATLAB的基本语句编成的各种子程序集,用于解决某一方面的专门问题或实现某一类的新算法。MATLAB有30多个工具箱,大致可分为两类:功能型工具箱和领域型工具箱。功能型工具箱主要用来扩充MATLAB的符号计算功能、图形建模仿真功能、文字处理功能及与硬件实时交互功能,能用于多种学科。而领域型工具箱是专业性很强的工具箱,如控制系统工具箱(Control System Toolbox)、信号处理工具箱(Signal Processing Toolbox)、财政金融工具箱(Financial Toolbox)等。下面简要介绍MATLAB工具箱内所包含的主要内容。
1.通信工具箱(Communication Toolbox)
提供100多个函数和150多个Sinulink模块用于通信系统的仿真和分析。
信号编码
调制解调
滤波器和均衡器设计
通道模型
同步
可由结构图直接生成可应用的C语言源代码
2.控制系统工具箱(Control System Toolbox)
连续系统设计和离散系统设计
状态空间和传递函数
模型转换
频域响应:Bode图、Nyquist图、Nichols图
时域响应:冲激响应、阶跃响应、斜波响应等
根轨迹、极点配置、LQG
3.财政金融工具箱(Financial Toolbox)
成本、利润分析,市场灵敏度分析
业务量分析及优化
偏差分析
资金流量估算
财务报表
4.频率域系统辨识工具箱(Frequency Domain System Identification Toolbox)
辨识具有未知延迟的连续和离散系统
计算幅值/相位/零点/极点的置信区间
设计周期激励信号、最小峰值、最优能量等
5.模糊逻辑工具箱(Fuzzy Logic Toolbox)
友好的交互设计界面
自适应神经、模糊学习、聚类及Sugeno推理
支持Sinulink动态仿真
可生成C语言源代码用于实时应用
6.高阶谱分析工具箱(Higher-Order Spectral Analysis Toolbox)
高阶谱估计
信号中非线性特征的检测和刻画
延时估计
幅值和相位重构
阵列信号处理
谐波重构
7.图像处理工具箱(Image Processing Toolbox)
二维滤波器设计和滤波
图像恢复增强
色彩、集合及形态操作
二维变换
图像分析和统计
8.线性矩阵不等式控制工具箱(LMI Control Toolbox)
LMI的基本用途
基于GUI的LMI编辑器
LMI问题的有效解法
LMI问题解决方案
9.模型预测控制工具箱(Model Predictive Control Toolbox)
建模、辨识及验证
支持MISO模型和MIMO模型
阶跃响应和状态空间模型
10.u分析与综合工具箱(u-Analysis and Synthesis Toolbox)
u分析与综合
H2和H无穷大最优综合
模型降阶
连续和离散系统
u分析与综合理论
11.神经网络工具箱(Neural Network Toolbox)
BP、Hopfield、Kohonen、自组织、径向基函数等网络
竞争、线性、Sigmoidal等传递函数
前馈、递归等网络结构
性能分析及应用
12.优化工具箱(Optimization Toolbox)
线性规划和二次规划
求函数的最大值和最小值
多目标优化
约束条件下的优化
非线性方程求解
13.偏微分方程工具箱(Partial Differential Equation Toolbox)
二维偏微分方程的图形处理
几何表示
自适应曲面绘制
有限元方法
14.鲁棒控制工具箱(Robust Control Toolbox)
LQG/LTR最优综合
H2和H无穷大最优综合
奇异值模型降阶
谱分解和建模
15.信号处理工具箱(Signal Processing Toolbox)
数字和模拟滤波器设计、应用及仿真
谱分析和估计
FFT、DCT等变换
参数化模型
16.样条工具箱(Spline Toolbox)
分段多项式和B样条
样条的构造
曲线拟合及平滑
函数微分、积分
17.统计工具箱(Statistics Toolbox)
概率分布和随机数生成
多变量分析
回归分析
主元分析
假设检验
18.符号数学工具箱(Symbolic Math Toolbox)
符号表达式和符号矩阵的创建
符号微积分、线性代数、方程求解
因式分解、展开和简化
符号函数的二维图形
图形化函数计算器
19.系统辨识工具箱(System Identification Toolbox)
状态空间和传递函数模型
模型验证
MA、AR、ARMA等
基于模型的信号处理
谱分析
20.小波工具箱(Wavelet Toolbox)
基于小波的分析和综合
图形界面和命令行接口
连续和离散小波变换及小波包
一维、二维小波
自适应去噪和压缩
常用的管理命令及示例如下:
>> which Bode C:\MATLAB6p5p1\toolbox\control\control\bode.m >> cd C:\MATLAB6p5p1\toolbox\control\control >> what M-files in the current directory C:\MATLAB6p5p1\toolbox\control\control Contents care damp dsort imargin ltimask minreal pade rmodel ss2ss acker connect dare dss impulse ltimodels modred parallelrss step append covar dcgain esort initial ltiprops ngrid place series zgrid augstate ctrb dkalman estim lqr ltitr nichols pzmap sgrid balreal ctrbf dlqr feedback lqrd ltiview nyquist reg sigma bode ctrlpref dlyap filt lqry lyap obsv rlocfindsisotool c2d d2c drmodel freqresp lsim margin obsvf rlocus slblocks canon d2d drss gensig ltifr mimofr ord2 rltool slview MAT-files in the current directory C:\MATLAB6p5p1\toolbox\control\ control ltiexamples MDL-files in the current directory C:\MATLAB6p5p1\toolbox\control\ control Model_Inputs_and_Outputs cstextras cstblocks ltiblock Classes in the current directory C:\MATLAB6p5p1\toolbox\control\control frd lti ss tf zpk >> lookfor bode BODE Bode frequency response of LTI models. DBODE Bode frequency response for discrete-time linear systems. DFRQINT Discrete auto-ranging algorithm for DBODE plots. FBODE Bode frequency response for continuous-time linear systems. FREQINT Auto-ranging algorithm for Bode frequency response. PLOTBODE Plots Bode responses given the plotting data. PLOTFRSP Plot the frequency response generated by MOD2FRSP as a Bode plot. CLXBODE Continuous complex frequency response (SIMO). DCLXBODE Discrete complex frequency response (SIMO). DINTPLT Script file for plotting the SV Bode plot of DINTDEMO. FITD State space realization of a given magnitude Bode plot. POWER_FILTERBODE plots the impedance versus frequency characteristic of power_filter demo. PSBFILTERBODE plots the impedance versus frequency characteristic of psbfilter demo. BODEPLOT Plots the Bode diagram of a transfer function or spectrum. BODEAUX Help function to IDMODEL/BODE and FFPLOT SYSARDEC Parse the input arguments for BODE, NYQUITS and FFPLOT BODE Bode frequency response of LTI models. BODEASYM Plots the asymptotic Bode magnitude curve BODEMAG Bode magnitude plot for LTI models. BODE Bode frequency response of LTI models. BODEASYM Plots the asymptotic Bode magnitude curve BODEMAG Bode magnitude plot for LTI models. bode.m: %IDMODEL/BODE Plots the Bode diagram of a transfer function or spectrum. boderesp.m: %IDFRD/BODERESP Computes a model' s frequency function, along with its standard deviation bode.m: %IDMODEL/BODE Plots the Bode diagram of a transfer function or spectrum. BODERESP Computes a model' s frequency function, along with its standard deviation >> type Bode
将在MATLAB的命令窗口中显示Bode.m文件的源代码。
目录设置如图1.1.5所示。
图1.1.5 目录设置
>> path MATLABPATH C:\Documents and Settings\new\桌面\我的MATLAB工作目录 C:\MATLAB6p5p1\work C:\MATLAB6p5p1\toolbox\matlab\general … …