Matlab在自动控制理论中的应用.ppt_第1页
Matlab在自动控制理论中的应用.ppt_第2页
Matlab在自动控制理论中的应用.ppt_第3页
Matlab在自动控制理论中的应用.ppt_第4页
Matlab在自动控制理论中的应用.ppt_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Matlab在自动控制理论中的应用 MATLAB概述应用MATLAB进行模型处理用MATLAB进行动态响应分析用MATLAB绘制系统的根轨迹MATLAB频率特性分析MATLAB离散控制系统分析 MATLAB语言基础 一 MATLAB语言的发展matlab语言是由美国CleverMoler博士于1980年开发的 设计者的初衷是为解决 线性代数 课程的矩阵运算问题 取名MATLAB即MatrixLaboratory矩阵实验室的意思 MATLAB的历史 70年代后期美国新墨西哥大学clevemoler为linspack和eispack编写的接口程序 80年代初 用C编写的MATLAB二代版本 1984 MATHWORKS公司成立 图形处理 数值计算 符号计算 文字处理 数学建模 实时控制 动态仿真 计算机语言的发展 标志着计算机语言向 智能化 方向发展 被称为第四代编程语言 它将一个优秀软件的易用性与可靠性 通用性与专业性 一般目的的应用与高深的科学技术应用有机的相结合 MATLAB是一种直译式的高级语言 比其它程序设计语言容易 MATLAB语言与其它语言的关系仿佛和C语言与汇编语言的关系一样 MATLAB已经不仅仅是一个 矩阵实验室 了 它集科学计算 图象处理 声音处理于一身 并提供了丰富的Windows图形界面设计方法MATLAB语言是功能强大的计算机高级语言 它以超群的风格与性能风靡全世界 成功地应用于各工程学科的研究领域 MATLAB在美国已经作为大学工科学生必修的计算机语言之一 C FORTRAN ASSEMBLER MATLAB 近年来 MATLAB语言已在我国推广使用 现在已应用于各学科研究部门和许多高等院校MATLAB语言不受计算机硬件的影响 286以上的计算机都可以使用 二 matlab能在各领域做什么工业研究与开发数学教学 特别是线性代数数值分析和科学计算方面的教学与研究电子学 控制理论和物理学等工程和科学学科方面的教学与研究经济学 化学和生物学等计算问题的所有其他领域中的教学与研究 三 MATLAB语言的特点 语言简洁紧凑 语法限制不严 程序设计自由度大 可移植性好运算符 库函数丰富图形功能强大界面友好 编程效率高扩展性强 四 MATLAB语言的功能 强大的数值 矩阵 运算功能广泛的符号运算功能高级与低级兼备的图形功能 计算结果的可视化功能 可靠的容错功能应用灵活的兼容与接口功能信息量丰富的联机检索功能 1 矩阵运算功能 MATLAB提供了丰富的矩阵运算处理功能 是基于矩阵运算的处理工具 变量 矩阵 运算 矩阵的运算例如C A B A B C都是矩阵 是矩阵的加运算即使一个常数 Y 5 MATLAB也看做是一个1 1的矩阵 2 符号运算功能符号运算即用字符串进行数学分析允许变量不赋值而参与运算用于解代数方程 微积分 复合导数 积分 二重积分 有理函数 微分方程 泰乐级数展开 寻优等等 可求得解析符号解 3 丰富的绘图功能与计算结果的可视化 具有高层绘图功能 两维 三维绘图具有底层绘图功能 句柄绘图使用plot函数可随时将计算结果可视化 4 图形化程序编制功能 动态系统进行建模 仿真和分析的软件包用结构图编程 而不用程序编程只需拖几个方块 连几条线 即可实现编程功能 5 丰富的MATLAB工具箱 MATLAB主工具箱符号数学工具箱SIMULINK仿真工具箱控制系统工具箱信号处理工具箱 图象处理工具箱通讯工具箱系统辨识工具箱神经元网络工具箱金融工具箱 许多学科 在MATLAB中都有专用工具箱 现已有30多个工具箱 但MATLAB语言的扩展开发还远远没有结束 各学科的相互促进 将使得MATLAB更加强大 6 MATLAB的开放式可扩充结构 matlab所有函数都是开放的用户可按自己意愿随意更改正因为此功能 使得matlab的应用越来越广泛7 强大的联机检索帮助系统可随时检索matlab函数可随时查询matlab函数的使用方法 1 启动MATLAB 开机执行程序c matlab bin matlab exe用鼠标双击matlab图标即可打开matlab命令平台 五 初步认识Matlab 启动平台 工作空间窗口 命令历史记录 当前路径窗口 命令窗口 与Windows的窗口界面类似 有菜单项File Edit Option Windows Help等项可以选择 工作窗出现以后 即可进行各种操作 菜单项File 其功能如下New建立新文件OpenM File打开M 文件Openselected打开选定文件SaveWorkspaceAs将工作区存为RunM File运行M 文件LookForSelected寻找选定文件Print打印PrintSetup打印设置ExitMATLAB退出MATLAB 例 用一个简单命令求解线性系统3x1 x2 x3 3 6x1 2x2 4x3 2 1 x1 4x2 5x3 1 4A 31 1 124 145 b 3 6 2 1 1 4 x A bx 1 4818 0 46060 3848 对于线性系统有Ax b 例 用简短命令计算并绘制在0 x 6范围内的sin 2x sinx2 sin2x x linspace 0 6 y1 sin 2 x y2 sin x 2 y3 sin x 2 plot x y1 x y2 x y3 用四种方法描述cos x sin y 图形 六 matlab的数据与变量 变量查询函数who与whos作用都是列出在matlab工作空间中已经驻留的变量名清单不同的是whos在给出驻留变量的同时 还给出他们的维数及性质 2 永久变量 在matlab工作内存中 驻留了几个由系统本身在启动时定义的变量 我们称为永久变量永久变量用who指令是查看不到的 只可随时调用 3 what程序查询指令 what按扩展名分类列出当前目录上的文件what m列出当前目录中所有m文件 七 文件系统与路径函数 which列出指定文件所在的目录whichtest m显示test m所在的路径path路径函数path显示matlab启动时设定的搜索路径 path path c mydir 将根目录下的mydir临时纳入搜索路径可将你需要的目录永久纳入matlab搜索路径打开c matlab matlabrc m文件在所有搜索路径后加上 c mydir 八 matlab联机帮助命令 help功能提供matlab大部分主题的在线帮助信息help显示help主题一览表helpplotxyz显示有关三维做图指令帮助信息help 显示特殊字符与符号帮助信息helphelp显示help的帮助信息 虽然help可以随时提供帮助 但必须知道准确的函数名称 当不能确定函数名称时 help就无能为力了 Lookfor函数 它可提供通过一般的关键词 搜索出一组与之相关的命令lookforfourier寻找含有傅立叶变换的相关指令 help lookfor两个指令构成了matlab语言相当完善的在线帮助查询系统 lookforfouri寻找所有包含fouri的指令和注释如FFTDiscreteFouriertransform 九 matlab的演示功能 intro入门演示demo在线演示 应用MATLAB进行模型处理 线性系统理论中常用的数学模型有微分方程模型 传递函数模型等 而这些模型之间又有某些内在的等效关系 在MATLAB中 与传递函数的具体形式相对应 又有tf对象和zpk对象之分 我们分别称为有理分式模型和零极点模型 在本节 就线性定常时不变系统 LTI 数学模型分析中用到的MATLAB方法作一简要介绍 主要有拉氏变换 传递函数的转换 控制系统的特征根及零极点图 方框图模型的传递函数 符号模型的运算等 1 拉氏变换与反变换 拉氏变换 Laplace 的调用格式如下 L Laplace F 是缺省独立变量t的关于符号向量F的拉氏变换 缺省返回关于s的函数 L Laplace F t 是一个关于t代替缺省s项的拉氏变换 L Laplace F w z 是一个关于z代替缺省s项的拉氏变换 例求时域函数f t 6cos 3t e 3tcos 2t 5sin 2t 的拉氏变换 symsty y laplace 6 cos 3 t exp 3 t cos 2 t 5 sin 2 t 运行结果 y 6 s s 2 9 1 4 s 3 1 4 s 3 2 1 10 s 2 4 拉氏反变换 iLaplace 的调用格式如下 F iLaplace L 是缺省独立变量s的关于符号向量L的拉氏反变换 缺省返回关于t的函数 F iLaplace L y 是一个关于y代替缺省t项的拉氏变换 F iLaplace L y x 是一个关于x代替缺省t项的拉氏变换 的拉氏反变换 例求函数 symssFF ilaplace 16 s 2 4 s 5 s 4 2 16 运行结果 F 8 sin 2 t exp 4 t cos 4 t 1 4 exp 4 t sin 4 t 2 传递函数 有理分式模型传递函数的分子和分母均为多项式的形式称为有理分式模型 如下式所示 在MATLAB中 传递函数分子和分母多项式系数用行向量表示 例如多项式P s s3 2s 4 其输入为P 1024 传递函数分子或分母为因式时 调用conv 函数来求多项式向量 例如P s 5 s 2 s 3 10s2 20s 3 其输入为P 5 conv 12 conv 13 10203 调用函数 tf 可建立传递函数的有理分式模型 其调用格式如下 G tf num den 例已知某一系统的微分方程如下 试求其传递函数 num 171220 den 1612203625 G tf num den 运行结果 Transferfunction s 3 7s 2 12s 20 s 5 6s 4 12s 3 20s 2 36s 25 例将传递函数 转换为有理分式 模型 num conv 14 14 den conv 100 conv 15 1526 G tf num den 运行结果 Transferfunction s 2 8s 16 s 6 10s 5 27s 4 16s 3 30s 2 零极点模型传递函数的分子和分母均为因式的形式称为零极点模型 如下式所示 MATLAB控制工具箱提供了零极点模型与有理分式模型之间的转换函数 调用格式分别为 z p k tf2zp num den num den zp2tf z p k 其中 前一个函数可将有理分式模型转换为零极点模型 而后一个函数可将零极点模型转换为有理分式模型 例将传递函数 转换为零极点模型 num 61812 den 1526 z p k tf2zp num den 得到零极点及其增益 运行结果 z 2 1p 4 8428 0 0786 1 1103i 0 0786 1 1103ik 6即变换后的零极点模型为 验证 调用zp2tf 函数 可得到原传递函数模型 如 num den zp2tf z p k 由零极点形式转换为传递函数形式G tf num den 形成传递函数表达式 3 控制系统的特征根及零极点图 系统的特征根MATLAB提供了多项式求根函数roots 其调用格式为r roots P 其中 P为多项式 例特征方程 r roots 1304 r 3 35530 1777 1 0773i0 1777 1 0773i 其根可由下面语句 求得 零极点图 传递函数在复平面上的零 极点图 采用pzmap 函数来完成 零点用 表示 极点用 表示 其调用格式为 p z pzmap num den 其中 p为传递函数 的极点 的零点 z为 例某系统开环传递函数如下 试求其零 极点图 num 10 0 51 den conv 10 conv 0 251 0 511 pzmap num den 得到零极点图grid 4 控制系统的方框图模型 串联两个系统G1 s 和G2 s 相串联 在MATLAB中可用串联函数series 来求合成系统 其调用格式为 num den series num1 den1 num2 den2 并联 两个系统G1 s 和G2 s 相并联 在MATLAB中可用并联函数parallel 来实现合成系统 其调用格式为 num den parallel num1 den1 num2 den2 反馈 反馈连接前向通路传递函数为G s 反馈通路传递函数为H s 在MATLAB中可用feedback 函数来实现反馈连接 其调用格式为 num den feedback numg deng numh denh sign 用MATLAB进行动态响应分析 1 绘制响应曲线 如果已知闭环传递函数的分子num与分母den 则命令impulse num den impulse num den t 将产生单位脉冲响应曲线 命令step num den step num den t 将产生单位阶跃响应曲线 t为用户指定时间 Matlab提供了求取线性定常连续系统单位脉冲响应和单位阶跃响应的函数 分别为impulse step 对单位斜坡响应 可利用单位斜坡函数为单位阶跃函数的积分来间接求取 方法是将待求系统传递函数乘以积分因子1 s 求其单位阶跃响应 即为原系统的单位斜坡响应 利用该方法也可通过单位脉冲响应命令来求取系统的单位阶跃响应 例2 1 用Matlab绘制系统 响应曲线 单位脉冲响应曲线 的单位阶跃 num 0025 分子多项式系数den 1425 分母多项式系数step num den 产生阶跃响应grid title unit stepresponseof25 s 2 4s 25 添加标题 将step num den 命令改成impulse num den 例2 2 求系统 系统输出的拉氏变换为 的单位斜坡响应曲线 num 00025 den 14250 step num den 3 gridtitle unit stepresponseof25 s 2 4s 25 2 阶跃响应性能分析 当阶跃命令左端含有变量时 如 y x t step num den t 将不会显示响应曲线 阶跃响应的输出数据将保存在y中 t中保存各采样时间点 若希望绘制响应曲线 可采用plot命令 当需要计算阶跃响应性能指标时 可根据各指标的定义 结合y和t中保存的数据 来计算各项性能指标 例2 3 用Matlab求系统 跃响应性能指标 上升时间 峰值时间 调节时间和超调量 的单位阶 num 0025 den 1425 y x t step num den peak k max y 求响应曲线的最大值overshoot peak 1 100 计算超调量tp t k 求峰值时间n 1 求上升时间whiley n 0 98 endts t m 已知单位负反馈控制系统的开环传递函数为 z 2 p 0 0 5 0 8 3 k 0 2 Go zpk z p k Gc tf feedback Go 1 dc Gc den dens poly2str dc 1 s 根据特征多项式 求其特征根来判断系统的稳定性 den 14 34 31 40 4 p roots den 利用零极点图来判断系统的稳定性 z p k zpkdata Gc v pzmap Gc 例2 4 试判断此闭环系统的稳定性 例3 4 控制系统结构图如下图所示 试在Simulink环境下构建系统方框图 并对系统的阶跃响应进行仿真 3 应用Simulink进行仿真 Simulink是一个可视化动态系统仿真环境 使用Simulink可分析非常复杂的控制系统 而且 可以方便地分析系统参数变化对其性能的影响 用MATLAB绘制系统的根轨迹 在应用Matlab绘制根轨迹时 首先要将系统的开环传递函数写成如下形式 将分子多项式与分母多项式按s的降幂写成向量形式num和den 则采用以下命令可绘制根轨迹图 rlocus num den 该命令不仅可用于连续系统 还可用于离散系统 另外 还可自动获得根轨迹上各点的增益 命令rlocus num den K 直接绘制出给定K值时的闭环极点 如果引入左端变量 即 r K rlocus num den K 则r向量中元素为指定K值闭环极点的位置 如果不指定K 即 r K rlocus num den 则r矩阵的行数与K向量的元素相同 列数与极点的个数相同 r中元素分别为各对应K值的闭环极点 这时 使用绘图命令plot r 也可绘制系统根轨迹 如果希望在绘制根轨迹时标上符号 o 或 x 则需要采用下列绘图命令plot r o 或plot r x 这时 每一个计算的闭环极点都被图解表示出来 例3 1已知系统的开环传递函数为 应用Matlab绘制系统根轨迹 num 122 den 14160 rlocus num den v 50 44 axis v gridtitle RootLocusPlotofG s H s K s 2 2s 2 s s 2 4s 16 例3 2已知系统的开环传递函数 应用Matlab绘制系统根轨迹 a 140 b 122 den conv a b num 1416 rlocus num den v 40 5 1515 axis v gridtitle RootLocusPlotofG s H s K s 2 4s 16 s s 4 s 2 2s 2 a 140 b 122 den conv a b num 1416 K1 0 0 2 20 K2 20 0 1 30 K3 30 5 1000 K K1K2K3 r rlocus num den K plot r o v 40 5 1515 axis v gridtitle RootLocusPlotofG s H s K s 2 4s 16 s s 4 s 2 2s 2 或 MATLAB频率特性分析 MATLAB控制系统工具箱在频率响应法方面提供了许多函数支持 使用它们可以很方便地绘制控制系统的频率特性图并对系统进行频域分析或设计 常用的MATLAB函数有 bode 绘制控制系统的伯德图 nyquist 绘制控制系统的奈奎斯特曲线 nichols 绘制控制系统的尼科尔斯图 margin 计算控制系统的稳定裕量 freqresp 计算系统在指定频率处的频率响应值 evalfr 计算LTI系统在单个复频率处的频率响应值 其中bode nyquist和nichols函数 既适用于单变量系统也适用于多变量 即MIMO 系统 既适用于连续时间系统也适用于离散时间系统 在这一节里将通过具体的例子来说明如何应用bode nyquist和nichols等函数绘制控制系统的伯德图和奈奎斯特曲线以及尼柯尔斯图 MATLAB中绘制Bode图的函数是bode 调用格式为bode num den bode num den w mag phase w bode num den mag phase bode num den w Bode num den 可以绘制传递函数为 1 Bode图 时系统的bode图 带左端变量的bode函数运行后 屏幕上将不显示bode图 而是在用户指定的频率点向量w上把系统的频率特性表示成幅值和相角 并分别由mag矩阵和phase矩阵来表示 Bode函数具有自动频率选择功能 函数的输入变量部分未给出频率的范围 则该函数能根据系统模型的特性自地选择频率的变化范围 若需要人为地指定频率范围或频率点w 可以在函数的输入变量部分包含所定义w w的定义可以采用logspace函数 其格式为W logspace a b n 其中 a表示最小频率10a b表示最大频率10b n表示10a 10b之间的频率点数 例如 num 100 12 den 121200 bode num den grid 如果指定频率范围 则MATLAB命令改写为 num 100 12 den 121200 w logspace 1 2 200 bode num den w grid 在MATLAB中可采用函数margin 来求取相对稳定性 调用格式为 Gm Pm wcg wcp num den 式中 Gm为幅值裕度 Pm为相角裕度 wcg为穿越线 所对应的频率 wcp为幅值为0dB时所对应的频率 num 100 12 den 121200 margin num den 例如 2 Nyquist图 MATLAB中绘制Nyquist图的函数是nyquist 调用格式为Nyquist num den Nyquist num den w re im Nyquist num den re im Nyquist num den w Nyquist num den 可以绘制传递函数为 时系统的nyquist图 带左端变量的nyquist函数运行后 屏幕上将不显示nyquist图 而是在指定的频率点向量w上把系统的频率特性表示成re和im矩阵 分别对应系统频率特性的实部和虚部 例如 num 1 den 112 nyquist num den grid 例如 num 2 den 1230 nyquist num den grid 此时可以放大镜工具或轴函数axis 命令进行局部放大 进行稳定性分析 如规定实轴 虚轴范围分别为 1 5 0 5 1 1 有 axis 1 5 0 5 11 3 Nichols图 MATLAB中绘制Nichols图的函数是Nichols 调用格式为nichols num den nichols num den w mag phase w nichols num den mag phase nichols num den w nichols num den 可以绘制传递函数为 时系统的nichols图 当带输出变量引用函数时 可以得到系统nichols图线的数据 而不直接绘出nichols图线 例如 num 2 den 1230 nichols num den ngrid MATLAB离散控制系统分析 MATLAB在离散控制系统中起着重要作用 无论将连续系统离散化 离散控制系统的离散输出响应 连续输出响应 离散控制系统设计等方面 都可以用MATLAB进行研究 1 连续系统的离散化 连续系统离散化 在MATLAB中应用c2d 函数实现 其调用格式为c2d num den T zoh 其中 num 传递函数分子多项式系数 den 传递函数分母多项式系数 T 采样周期 zoh 零阶保持 例 已知采样系统的结构图如图8 43所示 求开环脉冲传递函数 采样周期T 1s 解 可用解析法求出 用MATLAB可以方便地求出上述结果 程序如下 num 1 den 1 1 0 T 1 numz denz c2d num den T zoh printsys numz denz Z 2 采样系统的响应 在MATLAB中 求系统的响应可应用dstep dimpulse dlsim 函数来实现 分别用于求采样系统的阶跃 脉冲 任意输入时的响应 1 dstep 函数的调用格式为 dstep num den n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论