Matlab中lsim函数使用

Matlab中lsim函数使用lsim函数:lsim函数是针对线性时不变模型,给定任意输入,得到任意输出。lsim函数表示任意输入函数的响应,连续系统对任意输入函数的响应可以利用lsim函数求取。语法(常用):1.分子分母形式lsim(num,den,u,t)2.传递函数形式lsim(sys,u,t)3.状态空间形式lsim(A,B,C,D,u,t)其中,u为由给定输入序列构成的矩阵,它的每列对应一个输入,每行对应一个新的时间点,其行数与时间t的长度相等,其它的用法与step函数相同。…

大家好,又见面了,我是你们的朋友全栈君。

目录

语法(常用)

说明

示例


        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);

        如图所示:

Matlab中lsim函数使用

        当控制系统为状态空间表示时,则:

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

        采用方波输入,响应如图所示: 

Matlab中lsim函数使用

示例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

Matlab中lsim函数使用

        用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)

        如图所示:

Matlab中lsim函数使用

        当输入为正弦波时,即模拟系统对周期为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)

        其响应如图所示:

Matlab中lsim函数使用

示例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")

        如图所示:

Matlab中lsim函数使用

        默认情况下,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")

        如图所示:

Matlab中lsim函数使用

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

Matlab中lsim函数使用

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160814.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 案例上手 Python 数据可视化

    案例上手 Python 数据可视化课程亮点6个常用的数据可视化工具使用方法 20个案例贯穿各个工具的学习过程 基于GUI/HTML/Web网站多种绘图风格 中、美、日三国不同思想的制图工具 从静态到交互,满足不同需要的图示课程背景数据可视化是数据分析和机器学习的重要环节,比如数据清洗、特征工程、机器学习、数据分析(特别是报告)、评估等环节都会用到“数据可视化”技术。数据可视化同时还广泛存在于各…

    2022年6月16日
    25
  • Simple Automated Backups for MongoDB Replica Sets

    Simple Automated Backups for MongoDB Replica Sets

    2022年1月2日
    55
  • Matlab循环语句_matlab中if语句的用法

    Matlab循环语句_matlab中if语句的用法《matlab循环语句》由会员分享,可在线阅读,更多相关《matlab循环语句(9页珍藏版)》请在人人文库网上搜索。1、matlab基本语句1.循环语句forfori=s1:s3:s2循环语句组end解释:首先给i赋值s1;然后,判断i是否介于s1与s2之间;如果是,则执行循环语句组,i=i+s3(否则,退出循环.);执行完毕后,继续下一次循环。例:求1到100的和,可以编程如下:sum=0fo…

    2022年9月28日
    3
  • linux抓包教程_ubuntu抓包命令

    linux抓包教程_ubuntu抓包命令linux抓捕网络包jacky.1650727278@@q.comtcpdump是linux命令行下常用的的一个抓包工具,记录一下平时常用的方式,测试机器系统是centos7。tcpdump的命令格式tcpdump的参数众多,通过mantcpdump可以查看tcpdump的详细说明,这边只列一些笔者自己常用的参数:tcpdump[-i网卡]-nnAX‘表达式’各参数说明…

    2022年10月11日
    4
  • 互斥锁、自旋锁、读写锁、悲观锁、乐观锁的应用场景[通俗易懂]

    互斥锁、自旋锁、读写锁、悲观锁、乐观锁的应用场景[通俗易懂]最常用的就是互斥锁,当然还有很多种不同的锁,比如自旋锁、读写锁、乐观锁等,不同种类的锁自然适用于不同的场景。如果选择了错误的锁,那么在一些高并发的场景下,可能会降低系统的性能,这样用户体验就会非常差了。所以,为了选择合适的锁,我们不仅需要清楚知道加锁的成本开销有多大,还需要分析业务场景中访问的共享资源的方式,再来还要考虑并发访问共享资源时的冲突概率。

    2022年8月12日
    6
  • 二进制加,减法,23个位运算技巧[通俗易懂]

    二进制加,减法,23个位运算技巧[通俗易懂]二进制加,减法二进制最高位为1时表示负数,为0时表示正数。**原码:**一个正数,转换为二进制位就是这个正数的原码。负数的绝对值转换成二进制位然后在高位补1就是这个负数的原码。举例说明:      int类型的3的原码是11B(B表示二进制位),在32位机器上占四个字节,那么高位补零就得:      00000000000000000000000000000011    …

    2022年6月25日
    35

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号