博客
关于我
Matlab中lsim函数的使用
阅读量:355 次
发布时间:2019-03-04

本文共 2911 字,大约阅读时间需要 9 分钟。

 

目录


lsim函数:lsim函数是针对线性时不变模型,给定任意输入,得到任意输出。lsim函数表示任意输入函数的响应,连续系统对任意输入函数的响应可以利用lsim函数求取。

语法(常用)

1.分子分母形式

lsim(num,den,u,t)

2.传递函数形式

lsim(sys,u,t)

3.状态空间形式

lsim(A,B,C,D,u,t)

4.其它形式

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.示例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.示例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 pointsu = 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.示例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.示例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 onlegend("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.示例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时,输入有一个阶跃变化,该图显示了系统从此时的状态值开始对这个新信号的响应:

 

 

 

转载地址:http://kucr.baihongyu.com/

你可能感兴趣的文章
mysql中出现Unit mysql.service could not be found 的解决方法
查看>>
mysql中出现update-alternatives: 错误: 候选项路径 /etc/mysql/mysql.cnf 不存在 dpkg: 处理软件包 mysql-server-8.0的解决方法(全)
查看>>
Mysql中各类锁的机制图文详细解析(全)
查看>>
MySQL中地理位置数据扩展geometry的使用心得
查看>>
Mysql中存储引擎简介、修改、查询、选择
查看>>
Mysql中存储过程、存储函数、自定义函数、变量、流程控制语句、光标/游标、定义条件和处理程序的使用示例
查看>>
mysql中实现rownum,对结果进行排序
查看>>
mysql中对于数据库的基本操作
查看>>
Mysql中常用函数的使用示例
查看>>
MySql中怎样使用case-when实现判断查询结果返回
查看>>
Mysql中怎样使用update更新某列的数据减去指定值
查看>>
Mysql中怎样设置指定ip远程访问连接
查看>>
mysql中数据表的基本操作很难嘛,由这个实验来带你从头走一遍
查看>>
Mysql中文乱码问题完美解决方案
查看>>
mysql中的 +号 和 CONCAT(str1,str2,...)
查看>>
Mysql中的 IFNULL 函数的详解
查看>>
mysql中的collate关键字是什么意思?
查看>>
MySql中的concat()相关函数
查看>>
mysql中的concat函数,concat_ws函数,concat_group函数之间的区别
查看>>
MySQL中的count函数
查看>>