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

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

lsim函数详解


目录

  • 语法(常用)

    • 分子分母形式
    • 传递函数形式
    • 状态空间形式
    • 其他形式
  • 说明

    • 响应图
    • 响应数据
  • 示例

    • 示例1
    • 示例2
    • 示例3
    • 示例4
    • 示例5

语法(常用)

1. 分子分母形式

lsim函数支持通过分子分母形式定义传递函数,语法如下:

lsim(num, den, u, t)
  • num:传递函数的分子多项式。
  • den:传递函数的分母多项式。
  • u:输入信号,行数与时间样本长度相等。
  • t:模拟时间点。

2. 传递函数形式

对于已定义的传递函数 sys,可以直接调用 lsim:

lsim(sys, u, t)
  • sys:传递函数对象。
  • u:输入信号。
  • t:模拟时间点。

3. 状态空间形式

对于状态空间模型,语法为:

lsim(A, B, C, D, u, t, x0)
  • A:状态矩阵。
  • B:输入矩阵。
  • C:输出矩阵。
  • D:直接传输矩阵。
  • u:输入信号。
  • t:模拟时间点。
  • x0:初始状态向量。

4. 其他形式

支持多种参数形式,例如:

lsim(sys, u, t, x0)lsim(sys, u, t, x0, method)y = lsim(sys, u, t)y = lsim(sys, u, t, x0)
  • method:插值方法,适用于连续时间模型。
  • y:模拟结果。

说明

响应图

lsim(sys, u, t) 用于绘制动态系统对输入信号的模拟响应。时间向量 t 指定仿真样本点。对于单输入系统,输入信号 u 与时间向量长度相同;对于多输入系统,u 的行数与时间样本长度相同,列数与输入维度相同。

响应数据

y = lsim(sys, u, t) 返回与输入同时采样系统的响应 t。对于单输出系统,y 与时间向量 t 长度相同;对于多输出系统,y 是行向量,行数与时间样本相同,列数与输出维度相同。


示例

示例1

传递函数表示:

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

如图所示,系统对方波输入的响应表现明显。


示例2

连续时间系统:

sys = tf(3, [1 2 3]);t = 0:0.04:8;u = max(0, min(t - 1, 1));lsim(sys, u, t);

模拟响应数据为:

y = lsim(sys, u, t);size(y)  # 1×201

示例3

离散时间系统:

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

模拟响应如图所示。


示例4

闭环系统对比:

H = tf(4, [1 10 25]);C1 = pidtune(H, 'PI');C2 = pidtune(H, 'PID');sys1 = feedback(H * C1, 1);sys2 = feedback(H * C2, 1);[u, t] = gensig('square', 4, 12);lsim(sys1, sys2, u, t);

默认情况下,lsim绘制的每个系统选择不同的颜色。可以通过 LineSpec 输入参数指定颜色和线条样式。


示例5

状态空间模型初始状态:

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

如图所示,系统从初始状态 x0 = [-0.2 0.3] 自由演化,在 t = 2 时输入阶跃信号,响应如图所示。

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

你可能感兴趣的文章
pandas 根据不是常量的第三列的值将值从一列复制到另一列
查看>>
pandas 根据值从多列中的一列查找
查看>>
Pandas 根据布尔条件选择行和列
查看>>
pandas 滚动窗口 - datetime64[ns] 未实现
查看>>
pandas 版本兼容特定的蟒蛇和NumPy配置吗?
查看>>
pandas 生成excel多级表头
查看>>
Pandas 的 DataFrame 详解-ChatGPT4o作答
查看>>
pandas 读取excel数据,以字典形式输出
查看>>
Pandas 读取具有浮点值的 csv 文件会导致奇怪的舍入和小数位数
查看>>
pandas 适用,但仅适用于满足条件的行
查看>>
pandas 重新采样到每月的特定工作日
查看>>
pandas :按移位分组和累加和(GroupBy Shift And Cumulative Sum)
查看>>
pandas :检测一个DF和另一个DF之间缺失的列
查看>>
Pandas-从具有嵌套列表列表的现有列创建动态列时出错
查看>>
Pandas-通过对列和索引的值求和来合并两个数据框
查看>>
pandas.columns、get_dummies等用法
查看>>
pandas.DataFrame.copy(deep=True) 实际上并不创建深拷贝
查看>>
pandas.read_csv()的详解-ChatGPT4o作答
查看>>
PANDAS.READ_EXCEL()输出‘;溢出错误:日期值超出范围‘;而不存在日期列
查看>>
pandas100个骚操作:再见 for 循环!速度提升315倍!
查看>>