3.6_Matlab问题.ppt_第1页
3.6_Matlab问题.ppt_第2页
3.6_Matlab问题.ppt_第3页
3.6_Matlab问题.ppt_第4页
3.6_Matlab问题.ppt_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

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

文档简介

Ch 3线性系统的时域分析 目录 1 1 目录概述3 1线性定常连续系统状态方程的解3 2状态转移矩阵及其计算3 3线性时变连续系统状态方程的解3 4线性定常连续系统的离散化3 5线性定常离散系统状态方程的解3 6Matlab问题本章小结 Matlab问题 1 3 3 6Matlab问题本章中涉及的计算问题主要有矩阵指数函数的计算 系统运动轨迹的计算 即状态空间模型的求解 以及连续系统的离散化 采样 基于Matlab的基本函数和工具箱 可以进行上述系统运动分析的计算和仿真 Matlab问题 2 3 为更好地进行动态系统运动分析的计算和仿真 编著者设计了一个Matlab符号化和图形化的控制系统运动分析软件平台lti analysis 这里将涉及新的Matlab程序设计方法 如使用符号计算工具箱进行矩阵指数函数和运动轨迹的符号计算 使用图形用户界面 GUI 设计控制系统仿真与实验的软件平台 Matlab问题 3 3 下面分别介绍基于Matlab的上述问题的程序编制和计算方法 主要有矩阵指数函数的计算线性定常连续系统的状态空间模型求解连续系统的离散化线性定常离散系统的状态空间模型求解线性定常系统的运动分析的符号计算和仿真平台 矩阵指数函数的计算 1 1 3 6 1矩阵指数函数的计算矩阵指数函数的计算问题有两类 一类是数值计算 即给定矩阵A和具体的时间t的值 计算矩阵指数eAt的值 另一类是符号计算 即在给定矩阵A下 计算矩阵指数函数eAt的封闭的 解析的 矩阵函数表达式 数值计算问题可由基本的Matlab函数完成 符号计算问题后一类则需要用到Matlab的符号工具箱 下面就分别介绍eAt的数值计算eAt的符号计算 eAt的数值计算 1 4 1 eAt的数值计算在Matlab中 给定矩阵A和时间t的值 计算矩阵指数eAt的值可以直接采用基本矩阵函数expm Matlab的expm 函数采用帕德 Pade 逼近法计算矩阵指数eAt 精度高 数值稳定性好 expm 函数的主要调用格式为Y expm X 其中 X为输入的需计算矩阵指数的矩阵 Y为计算的结果 eAt的数值计算 2 4 Matlab问题3 1试在Matlab中计算例3 1中矩阵A在t 0 3时的矩阵指数eAt的值 Matlab程序m3 1如下 Matlab程序m3 1执行结果如下 在Matlab中还有3个计算矩阵指数eAt的函数 分别是expmdemo1 expmdemo2 和expmdemo3 expmdemo1 就是expm 采用帕德逼近法计算矩阵指数 而expmdemo2 采用3 2 1节中介绍的利用泰勒级数展开法来计算 精度较低 expmdemo3 采用3 2 2节中介绍的利用特征值和特征向量来计算对角线矩阵 进而通过对角线矩阵的矩阵指数计算原矩阵的矩阵指数 eAt的数值计算 3 4 eAt的数值计算 4 4 expmdemo3 的计算精度取决于特征值 特征向量 指数函数exp 的计算精度 由于这3种计算有良好的计算方法 因此expmdemo3 的计算精度最高 但expmdemo3 只能计算矩阵的独立特征向量数等于矩阵的维数 即矩阵能变换为对角线矩阵的情况 因此 在不能判定矩阵是否能变换为对角线矩阵时 尽量采用函数expm eAt的符号计算 1 8 2 eAt的符号计算在Matlab中 对给定矩阵A 可通过符号计算工具箱的函数expm 计算变量t的矩阵指数函数eAt的表达式 在使用Matlab的符号计算工具箱计算时 需要定义符号变量 输入符号表达式与符号矩阵 下面介绍使用符号计算工具箱需要的基本操作 eAt的符号计算 2 8 1 定义符号变量定义 指定 符号变量的语句的格式为symstsx 该语句将符号t s x 定义为符号变量 在该语句后 就可以输入和计算符号表达式与符号矩阵 eAt的符号计算 3 8 2 输入符号表达式符号表达式的输入可采用赋值语句的方式 如赋值语句f1 sin x 2 cos y 3 3 为定义符号表达式变量f1为表达式 在Matlab中 符号表达式的输入采用符号串的形式 其表达式的格式与Matlab的数值计算的格式基本一致 eAt的符号计算 4 8 3 输入符号矩阵Matlab中符号矩阵的输入采用函数sym sym 的调用格式为S sym A 该函数的功能为将符号串A转换为符号矩阵 其中符号串A的格式与使用Matlab进行数值计算时矩阵的计算公式格式基本一致 如f2 sym x 2 sqrt 1 x y x 1 zx z 3 的函数sym 将符号串 x 2 sqrt 1 x y x 1 zx z 3 转换为如下表示的符号矩阵 eAt的符号计算 5 8 在给符号表达式变量和符号矩阵变量赋值后 在Matlab7 0中就可以像数值计算公式那样直接采用算术运算符 以及exp expm 等函数进行符号计算 如 在前面的符号表达式变量f1和符号矩阵变量f2赋值后 执行符号计算公式f3 f1 f2就进行如下符号表达式的计算 eAt的符号计算 6 8 使用Matlab的符号工具箱的函数expm 可直接计算关于符号矩阵变量A的矩阵指数函数eA的表达式 符号计算函数expm 的调用格式为expA expm A 其中 输入矩阵A为Matlab的符号矩阵 输出矩阵expA为计算所得的eA的Matlab符号矩阵 Matlab问题3 2试在Matlab中计算例3 1中矩阵A的矩阵指数eAt eAt的符号计算 7 8 Matlab程序m3 2如下 其中t定义为符号变量 输入矩阵A为一般Matlab的数值矩阵 表达式A t即为Matlab的符号矩阵 Matlab程序m3 2执行结果如下 上述计算结果与例3 1的计算结果完全一致 例3 1的计算结果 eAt的符号计算 8 8 Matlab有着功能非常强大的符号计算功能 包括符号微分 符号积分 符号矩阵运算 符号线性方程组解 符号非线性方程组解 符号常微分方程组解等 还可以与符号计算软件Maple混合编程 调用Maple的其他符号计算功能 线性定常连续系统的状态空间模型求解 1 2 3 6 2线性定常连续系统的状态空间模型求解Matlab提供了非常丰富的线性定常连续系统的状态空间模型求解 即系统运动轨迹的计算 的功能 主要的函数有初始状态响应函数initial 阶跃响应函数step 以及可计算任意输入的系统响应函数lsim 但这里主要是计算其系统响应的数值解 线性定常连续系统的状态空间模型求解 2 2 对系统运动分析问题 有时需要求解系统响应的函数表达式 为此 编著者编写了专门用于求解系统响应函数表达式的Matlab符号计算函数sym lsim 下面将分别介绍状态空间模型求解的Matlab程序编制和计算问题 主要内容有 初始状态响应函数initial 阶跃响应函数step 任意输入的系统响应函数lsim 以及任意输入的符号响应函数sym lsim 初始状态响应函数initial 1 8 1 初始状态响应函数initial 初始状态响应函数initial 主要是计算状态空间模型 A B C D 的初始状态响应 其主要调用格式为initial sys x0 t y t x initial sys x0 t 其中sys为输入的状态空间模型 x0为给定的初始状态 t为指定仿真计算状态响应的时间区间变量 数组 第1种调用格式的输出格式为输出响应曲线图 第2种调用格式的输出为数组形式的输出变量响应值y 仿真时间坐标数组t 状态变量响应值x 初始状态响应函数initial 2 8 Matlab中 时间区间变量 数组 t有三种格式 t Tintial dt Tfinal表示仿真时间段为 Tintial Tfinal 仿真时间步长为dtt Tintial Tfinal表示仿真时间段为 Tintial Tfinal 仿真时间步长dt缺省为1t Tfinal表示仿真时间段为 0 Tfinal 系统自动选择仿真时间步长dt若时间数组缺省 没有指定 表示系统自动选择仿真时间区间 0 Tfinal 和仿真时间步长dt 初始状态响应函数initial 3 8 Matlab问题3 3试在Matlab中计算例3 1中如下系统在 0 5s 的初始状态响应 Matlab程序m3 3如下 其中 最后一句语句plot t x 是以时间坐标数组t为横坐标 绘出x中存储的2维状态向量x t 的随时间变化的轨迹 初始状态响应函数initial 4 8 Matlab程序m3 3执行结果如图3 4所示 图3 4Matlab问题3 3的状态响应曲线图 初始状态响应函数initial 5 8 Matlab提供的函数initial 只能计算出状态响应的计算值 若需要计算状态响应的表达式则需要根据前面介绍的符号工具箱 自己编程实现状态响应函数表达式的求解 Matlab问题3 4试在Matlab中计算Matlab问题3 3的初始状态响应表达式 Matlab程序m3 4如下 初始状态响应函数initial 6 8 Matlab程序m3 4执行结果如下 在Matlab程序m3 3中运用了绘图函数plot Matlab提供了非常强大的绘图功能 可以绘2维曲线图 3维曲面图 4维切片图以及动态图形 动画 其中函数plot 是主要的2维曲线绘图函数 主要调用格式为 plot Y plot X Y plot X Y LineSpec PropertyName PropertyValue 例3 3的计算结果 初始状态响应函数initial 7 8 第1种调用格式的输入Y为m n矩阵 其输出为矩阵Y的每一列画一条曲线 共n条曲线的曲线图 该曲线图的横坐标为1至m的自然数 对第2种调用格式 若X和Y为向量 则长度必须相等 输出为一条X为横坐标轴的曲线 若X为向量 Y为矩阵 则X的长度等于Y的行数或者列数 这时输出为Y的列向量或者行向量对应的 以X为横坐标轴的一组曲线 若Y为向量 X为矩阵 则Y的长度等于X的行数或者列数 这时输出为X的列向量或者行向量对应的 以Y为纵坐标轴的一组曲线 初始状态响应函数initial 8 8 第3种调用格式的LineSpec为指定输出曲线的线型 颜色 曲线数据点的标记符号 而 PropertyName 和PropertyValue则用于指定图的一些特性 如图名 坐标名与刻度等 阶跃响应函数step 1 2 2 阶跃响应函数step 阶跃响应函数step 可用于计算在单位阶跃输入和零初始状态 条件 下传递函数模型的输出响应 或状态空间模型的状态和输出响应 其主要调用格式为step sys t y t step sys t y t x step sys t 其中 对第1 2种调用格式 sys为传递函数模型变量或状态空间模型变量 对第3种方式 sys为状态空间模型变量 t为指定仿真计算状态响应的时间数组 其格式与初始状态响应函数initial 一样 也可以缺省 阶跃响应函数step 2 2 第1种调用格式的输出为输出响应的图形输出 而第2 3种调用格式的输出为将输出响应 时间坐标数组 状态响应赋值给指定的数组变量 阶跃响应函数step 的使用方法与前面介绍的initial 函数相似 这里不再赘述 任意输入的系统响应函数lsim 1 10 3 任意输入的系统响应函数lsim 任意输入的系统响应函数lsim 可用于计算在给定的输入信号序列 输入信号函数的采样值 下传递函数模型的输出响应 或状态空间模型的状态和输出响应 其主要调用格式为lsim sys u t x0 y t x lsim sys u t x0 其中 sys为传递函数模型变量或状态空间模型变量 t为时间坐标数组 u是输入信号u t 对应于时间坐标数组t的各时刻输入信号采样值组成的数组 是求解系统响应必须给定的 任意输入的系统响应函数lsim 2 10 x0是初始状态向量 当输入的sys为传递函数模型时 x0的值不起作用 可以缺省 函数lsim 的第1种调用格式的输出为将输出响应和输入信号序列绘在一起的曲线图 第2种调用格式的输出与前面介绍的2个响应函数一样 任意输入的系统响应函数lsim 3 10 输入变量u t 的值u可以为用户需要的任意输入函数根据时间坐标数组t进行采样获得 也可以采用Matlab中的信号生成函数gensig 产生 gensig 的调用格式为 u t gensig type tau u t gensig type tau Tf Ts 其中 type为选择信号类型的符号串变量 tau为以秒为单位的信号周期 Tf和Ts分别为产生信号的时间长度和信号的采样周期 gensig函数可以产生的信号类型type为正弦信号 sin 方波信号 square 周期脉冲信号 pulse 所有信号的幅值为1 任意输入的系统响应函数lsim 4 10 Matlab问题3 5试在Matlab中计算如下系统在 0 10s 内周期为3s的单位方波输入下的状态响应 Matlab程序m3 5如下 任意输入的系统响应函数lsim 5 10 Matlab程序m3 5执行结果如图3 5所示 图3 5Matlab问题3 5的状态响应曲线图 任意输入的系统响应函数lsim 6 10 Matlab提供的函数lsim 只能计算出状态响应的计算值 若需要计算状态响应的表达式则需要根据前面介绍的符号工具箱 自己编程实现状态响应函数表达式的求解 Matlab问题3 6试在Matlab中计算Matlab问题3 5的系统的单位阶跃状态响应表达式 Matlab程序m3 6如下 任意输入的系统响应函数lsim 7 10 Matlab程序m3 6执行结果如下 例3 3的计算结果 任意输入的系统响应函数lsim 8 10 在Matlab程序m3 6中涉及符号积分的计算函数int 该函数的调用格式为 R int S R int S v R int S a b R int S v a b 其中 输入S为待求积分的符号表达式 v为积分变量 a和b分别为积分变量的下限和上限 符号积分函数int 的意义为求解符号表达式S对应于积分变量v在积分区间 a b 内的积分 积分结果R为符号表达式 任意输入的系统响应函数lsim 9 10 符号积分函数int 的积分变量v和积分上限a与下限b可以缺省 当v缺省时 则积分变量为程序中指定的惟一符号变量 或由符号工具箱符号变量自动确定规则确定符号表达式S的符号变量 符号工具箱符号变量自动确定规则为 符号变量为符号x或与x最近的单文字符号 如y z w v 当积分限a与b缺省时 只能同时缺省 则符号积分函数int 求解为S的不定积分式 任意输入的系统响应函数lsim 10 10 在Matlab程序m3 6中符号积分计算int expm A t tau B ut tau 0 t 中 待积分函数为eA t tau 积分变量指定为tau 积分区间为 0 t 该积分式计算的是零状态响应函数的表达式 进行的是卷积的符号计算 任意输入的符号响应函数sym lsim 1 9 4 任意输入的符号响应函数sym lsim Matlab提供的函数lsim 只能计算出状态响应的计算值 若需要计算状态响应的表达式 则需要根据前面介绍的符号工具箱 自己编程实现状态响应函数表达式的求解 编著者开发了专门进行任意输入下系统响应函数的符号表达式的符号计算函数sym lsim 以计算任意输入下的线性系统响应函数 任意输入的符号响应函数sym lsim 2 9 sym lsim 的主要调用格式为 yt xt sym lsim sys x0 in signal a b amplit yt xt sym lsim sys x0 in signal a b yt xt sym lsim sys x0 in signal 其中 sys为系统状态空间模型 x0 amplit a和b分别为系统的初始状态 输入信号幅值 求解的系统状态轨迹的起始时间和结束时间 in signal为输入信号符号串 输出项yt和xt的格式为符号表达式 矩阵 由于采用符号工具箱计算 因此 x0 a b和amplit可以为数值与数值变量 也可以为符号表达式或符号变量 任意输入的符号响应函数sym lsim 3 9 在sym lsim中 in signal可以是表示系统输入函数的符号表达式或符号变量 但为方便输入常用的阶跃信号和脉冲信号 分别规定这两类输入信号的in signal为 step 和 impulse 通过in signal和amplit这两个输入项 可以实现任意的系统输入信号设置 如 当输入信号u t sin 2t 0 5 e 3t时 in signal为符号表达式 sin 2 t 0 5 exp 3 t 当输入信号为5个单位脉冲信号时 in signal和amplit分别为in signal impulse amplit 5 任意输入的符号响应函数sym lsim 4 9 Matlab问题3 7试在Matlab中计算如下系统在输入u t e 2t下的输出响应表达式 Matlab程序m3 7如下 任意输入的符号响应函数sym lsim 5 9 Matlab程序m3 7执行结果如下 在Matlab中 计算得到符号表达式后 可以使用函数subs 和ezplot 很方便地求取所需要的函数值和绘出函数图形 下面加以简单介绍 任意输入的符号响应函数sym lsim 6 9 1 函数subs 函数subs 可用于符号表达式的函数值计算和变量代换 其主要调用格式为R subs S new R subs S old new 其中 S为要计算或代换的符号表达式 矩阵 old为要计算或被代换的符号变量 new为要计算的变量的值或代换的新变量 在第1种调用格式中没有指定需计算或代换的变量 系统自动根据符号变量自动确定规则确定符号表达式S的变量 任意输入的符号响应函数sym lsim 7 9 如 欲计算Matlab程序m3 7计算好的输出响应的符号表达式yt在t 0 6时刻的值 只需执行subs yt t 0 6 即可得系统输出响应y t 在t 0 6时刻的值为1 3586 任意输入的符号响应函数sym lsim 8 9 2 函数ezplot 符号表达式绘图函数ezplot 可以直接绘制符号表达式所表示的函数的2维曲线图 其主要调用格式为ezplot f min max ezplot f xmin xmax ymin ymax 其中 f为给定的符号表达式 min max 为需绘图曲线的自变量的区间 xmin xmax ymin ymax 为绘图曲线的2维变量的区间 当 min max 缺省时 系统自动设置绘图区间为 2 2 任意输入的符号响应函数sym lsim 9 9 如 欲绘出Matlab程序m3 7得到的符号表达式yt在 0 4s 内的曲线 只需执行ezplot yt 0 4 即可得系统输出响应y t 在 0 4s 内的曲线图如图3 6所示 图3 6输出响应的符号表达式的函数图 连续系统的离散化 1 6 3 6 3连续系统的离散化Matlab语言提供了连续系统经采样而进行离散化的函数c2d 该函数的功能为将连续系统的传递函数模型和状态空间模型变换为离散系统的传递函数模型和状态空间模型 其主要调用格式为sysd c2d sys Ts sysd c2d sys Ts method 其中 sys为输入的连续系统传递函数模型或状态空间模型 sysd为离散化所得的离散系统传递函数模型或状态空间模型 连续系统的离散化 2 6 Ts为采样周期 method为离散化方法选择变量 它可以为 zoh foh tustin 和 matched 等 分别对应于基于0阶和1阶保持器的离散化法 双线性法和零极点匹配法 与3 4 1节精确离散法对应的method的值为 zoh 其意义为采样系统的输入信号采样后将通过0阶保持器 连续系统的离散化 3 6 Matlab问题3 8试在Matlab中计算例3 11的如下系统在采样周期为0 1s时的离散化状态方程 Matlab程序m3 8如下 连续系统的离散化 4 6 Matlab程序m3 8执行结果如下 连续系统的离散化 5 6 对近似离散法 可以根据近似离散化公式 直接编程实现 Matlab问题3 9试用近似离散化方法计算Matlab问题3 8的系统的离散化状态方程 Matlab程序m3 9如下 连续系统的离散化 6 6 Matlab程序m3 9执行结果如下 线性定常离散系统的状态空间模型求解 1 5 3 6 4线性定常离散系统的状态空间模型求解Matlab提供的初始状态响应函数initial 阶跃响应函数step 和任意输入的系统响应函数lsim 也同样适用于线性定常离散系统 其使用方法与连续系统时基本一致 下面简单介绍如何运用任意输入的系统响应函数lsim 计算线性定常离散系统的响应 线性定常离散系统的状态空间模型求解 2 5 在计算离散系统的系统响应时 函数lsim 的主要调用格式为lsim sys u t x0 type yt t xt lsim sys u t x0 type 其中sys为离散系统的传递函数模型或状态空间模型 t为时间坐标数组 u为时间坐标数组t指定时刻的输入信号序列 其采样周期需与离散系统模型sys的采样周期定义一致 x0为初始状态 type为输入信号采样保持器的选择变量 type zoh 和 foh 分别表示为0阶和1阶采样信号保持器 线性定常离散系统的状态空间模型求解 3 5 若type缺省 Matlab将采用高阶保持器对输入的采样信号进行光滑处理后 再进行系统响应求解 对应于前面3 5 1节求取离散系统的状态响应方法 type变量应为 zoh 线性定常离散系统的状态空间模型求解 4 5 Matlab问题3 10试在Matlab中计算例3 14的线性离散系统在采样周期为0 1s 系统输入为sin t 时的 0 6s 的状态响应 Matlab程序m3 10如下 线性定常离散系统的状态空间模型求解 5 5 Matlab程序m3 10执行结果如图3 7所示 图3 7Matlab问题3 10的状态响应曲线图 根据符号计算函数sym lsim 的思想和源程序 读者可自行扩展 用于求解计算任意输入的线性定常离散系统的状态响应的符号表达式 线性定常系统的运动分析的符号计算和仿真平台 1 6 3 6 5线性定常系统的运动分析的符号计算和仿真平台根据本章的主要内容和线性定常系统的运动分析的需要 编著者基于Matlab的图形用户界面 GUI 技术 开发了一个线性定常系统运动分析的符号计算和图形仿真软件lti analysi 该软件的主要功能有可以对连续和离散2种线性定常系统运动的状态 输出响应实现符号计算和数值计算2种运动轨迹分析 系统可以是SISO的 也可以是MIMO的 系统的输入信号可以是常用的阶跃 脉冲 正弦 方波 白噪声等 特点的是可以实现任意输入信号的符号表达式输入 线性定常系统的运动分析的符号计算和仿真平台 2 6 可以实现状态和输出的运动轨迹的图形 数据以及符号表达式的输出 界面友好 操作简便 使用方便 线性定常系统的运动分析的符号计算和仿真平台 3 6 仿真软件lti analysis的界面如图3 8所示 图3 8仿真软件lti analysis的运行界面图 线性定常系统的运动分析的符号计算和仿真平台 4 6 用户只要在Matlab中将lti ana

温馨提示

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

评论

0/150

提交评论