本文共 1658 字,大约阅读时间需要 5 分钟。
语法(常用)
说明
示例
lsim函数支持通过分子分母形式定义传递函数,语法如下:
lsim(num, den, u, t)
num:传递函数的分子多项式。den:传递函数的分母多项式。u:输入信号,行数与时间样本长度相等。t:模拟时间点。对于已定义的传递函数 sys,可以直接调用 lsim:
lsim(sys, u, t)
sys:传递函数对象。u:输入信号。t:模拟时间点。对于状态空间模型,语法为:
lsim(A, B, C, D, u, t, x0)
A:状态矩阵。B:输入矩阵。C:输出矩阵。D:直接传输矩阵。u:输入信号。t:模拟时间点。x0:初始状态向量。支持多种参数形式,例如:
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 是行向量,行数与时间样本相同,列数与输出维度相同。
传递函数表示:
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); 如图所示,系统对方波输入的响应表现明显。
连续时间系统:
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
离散时间系统:
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);
模拟响应如图所示。
闭环系统对比:
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 输入参数指定颜色和线条样式。
状态空间模型初始状态:
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/