Matlab中lsim函数使用 |
您所在的位置:网站首页 › impulse官网什么意思 › Matlab中lsim函数使用 |
目录 语法(常用) 说明 示例 lsim函数:lsim函数是针对线性时不变模型,给定任意输入,得到任意输出。lsim函数表示任意输入函数的响应,连续系统对任意输入函数的响应可以利用lsim函数求取。 语法(常用)分子分母形式 lsim(num,den,u,t) 传递函数形式 lsim(sys,u,t) 状态空间形式 lsim(A,B,C,D,u,t) 其它形式 lsim(sys,u,t,x0) lsim(sys,u,t,x0,method) y=lsim(sys,u,t,x0) y=lsim(sys,u,t,x0,method) 其中,u为由给定输入序列构成的矩阵,它的每列对应一个输入,每行对应一个新的时间点,其行数与时间t的长度相等,其它的用法与step函数相同。 说明响应图 lsim(sys,u,t)绘制动态系统模型sys对输入历史记录(t,u)的模拟时间响应。 向量t指定用于仿真的时间样本。 对于单输入系统,输入信号u是与t长度相同的向量。 对于多输入系统,u是一个数组,其行数与时间样本(length(t))一样多,而列数与sys的输入一样多。 lsim(sys,u,t,x0)当sys是状态空间模型时,进一步指定初始状态值的向量x0。 lsim(sys,u,t,x0,method)当sys是连续时间模型时,如何在样本之间插入输入值,method即插入输入值的方法。 响应数据 y=lsim(sys,u,t)返回与输入y同时采样 的系统响应t。对于单输出系统,y是与长度相同的向量t。对于多输出系统, y是一个数组,其中的行与时间样本(length(t))一样多,列与的输出一样多sys。该语法不会生成图。 y=lsim(sys,u,t,x0)当sys是状态空间模型时,进一步指定初始状态值的向量x0。 y=lsim(sys,u,t,x0,method)当sys是连续时间模型时,如何在样本之间插入输入值,method即插入输入值的方法。 示例示例1 %------------------------------------ H(s)=[ 2s^2 + 5s + 1 --------------- s^2 + 2s + 3 s - 1 ----------- s^2 + s + 5 ] %------------------------------------ %% clc; clear off; H = [tf([2 5 1],[1 2 3]);tf([1 -1],[1 1 5])]; [u,t] = gensig('square',4,10,0.1); lsim(H,u,t);如图所示: 当控制系统为状态空间表示时,则: A = [-3 -1.5; 5 0]; B = [1; 0]; C = [0.5 1.5]; D = 0; sys = ss(A,B,C,D); [u,t] = gensig("square",10,20); lsim(sys,u,t) grid on采用方波输入,响应如图所示: 示例2 如下所示的传递函数: sys = tf(3,[1 2 3]) sys = 3 ------------- s^2 + 2 s + 3它是一个连续的系统,则: sys = tf(3,[1 2 3]); t = 0:0.04:8; % 201 points u = max(0,min(t-1,1)); lsim(sys,u,t) grid on用lsim函数获取模拟的响应数据为: y = lsim(sys,u,t); size(y) ans = 1×2 201 1向量y包含t相应时间的模拟响应。 示例3 当控制系统为离散型时,且该传递函数的采样时间为0.05 s。使用相同的采样时间来生成时间矢量t和阶跃信号u。如下所示: sys = tf([0.06 0.05],[1 -1.56 0.67],0.05); t = 0:0.05:4; u = max(0,min(t-1,1)); lsim(sys,u,t)如图所示: 当输入为正弦波时,即模拟系统对周期为1 s,持续时间为4 s的正弦波的响应。,则: sys = tf([0.06 0.05],[1 -1.56 0.67],0.05); t = 0:0.05:4; [u,t] = gensig("sine",1,4,0.05); lsim(sys,u,t)其响应如图所示: 示例4 lsim允许在同一轴上绘制多个动态系统的模拟响应。 例如,比较带有PI控制器和PID控制器的系统的闭环响应。 创建系统的传递函数并调整控制器。如下所示: H = tf(4,[1 10 25]); C1 = pidtune(H,'PI'); C2 = pidtune(H,'PID'); %形成闭环系统 sys1 = feedback(H*C1,1); sys2 = feedback(H*C2,1); %绘制两个系统对周期为4 s的方波的响应。 [u,t] = gensig("square",4,12); lsim(sys1,sys2,u,t) grid on legend("PI","PID")如图所示: 默认情况下,lsim绘制的每个系统选择不同的颜色。 可以使用LineSpec输入参数指定颜色和线条样式。 H = tf(4,[1 10 25]); C1 = pidtune(H,'PI'); C2 = pidtune(H,'PID'); %形成闭环系统 sys1 = feedback(H*C1,1); sys2 = feedback(H*C2,1); %绘制两个系统对周期为4 s的方波的响应。 [u,t] = gensig("square",4,12); lsim(sys1,"r--",sys2,"b",u,t) grid on legend("PI","PID")如图所示: 示例5 默认情况下,lsim假设在模拟开始时所有状态均为零,从而模拟模型。 模拟状态空间模型的响应时,当使用可选的x0输入参数指定非零初始状态值。 考虑以下两个状态的SISO状态空间模型。 A = [-1.5 -3; 3 -1]; B = [1.3; 0]; C = [1.15 2.3]; D = 0; sys = ss(A,B,C,D); x0 = [-0.2 0.3]; t = 0:0.05:8; u = zeros(length(t),1); u(t>=2) = 1; lsim(sys,u,t,x0) grid on如图所示,图的前半部分显示了系统从初始状态值[-0.2 0.3]的自由演化。 在t = 2时,输入有一个阶跃变化,该图显示了系统从此时的状态值开始对这个新信号的响应: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |