MATLAB LTI函数参数详解
在MATLAB控制系统工具箱中,step、impulse和lsim是分析线性时不变(LTI)系统的核心函数。它们都支持LTI对象(如tf, ss, zpk)以及直接使用传递函数系数(分子分母向量)。
函数说明
Step(阶跃响应)
用途:用于计算系统对单位阶跃输入的响应。
接受:LTI对象或系数向量。
核心用途:分析稳态误差、上升时间、超调量等。
Impulse(脉冲响应)
用途:用于计算系统对单位冲激输入的响应。
接受:LTI对象或系数向量。
核心用途:分析系统的动态特性(零状态响应)。
Lsim(任意输入)
用途:用于模拟系统对任意用户定义输入的响应。
接受:LTI对象或系数向量。
核心用途:非标准信号(如正弦波、方波)的仿真。
参数格式对比
这三类函数的调用语法非常相似,主要区别在于是否需要指定输入信号向量u。
推荐:LTI对象模式
语法:
step(sys),impulse(sys),lsim(sys, u, t)参数:
sys是一个LTI对象(如tf,ss)。优势:自动处理采样时间,无需手动指定时间向量
t,代码更简洁。
传递函数系数模式
语法:
step(b, a, t),impulse(b, a, t),lsim(b, a, u, t)参数:
b为分子系数向量,a为分母系数向量。注意:可以配合时间向量
t使用。
调用示例
% 定义一个二阶系统: s^2 + 2s + 1 s = tf('s'); sys = 1 / (s^2 + 2*s + 1); % 1. 使用 LTI 对象 step(sys) % 阶跃响应 impulse(sys) % 脉冲响应 lsim(sys, u, t) % u为任意输入,t为时间向量 % 2. 使用传递函数系数 b = [1]; a = [1 2 1]; t = 0:0.1:10; step(b, a, t) % 阶跃响应 impulse(b, a, t) % 脉冲响应 lsim(b, a, u, t) % 任意输入响应输出结果详解
当调用这些函数时,其返回值和绘图行为取决于是否指定了输出变量。
图形化输出(默认)
如果函数调用不包含输出参数(即直接调用),MATLAB会执行以下操作:
自动计算:根据系统特性计算响应数据。
自动绘图:在当前Figure窗口绘制曲线。
自动标注:通常会自动添加标题、坐标轴标签,并显示网格。
数据输出(带输出参数)
如果需要获取数据进行进一步处理,应使用
[y, t] = step(...)格式:y:响应输出向量(列向量)。t:时间向量(列向量)。
注意:对于
lsim,输出还可以包含状态轨迹(如果是状态空间模型)。
补充:
优先使用LTI对象:现代MATLAB开发建议先创建LTI对象(如
tf,ss),再调用step/impulse/lsim。这样代码可读性更强,且能利用LTI对象的更多属性。注意时间向量t:当使用系数向量
b, a时,必须确保t的长度足够长以捕捉系统的稳态行为(例如至少包含5个时间常数)。区分lsim:
lsim是唯一需要显式提供输入信号u的函数,而step和impulse内部已经隐含了特定的输入信号(阶跃或脉冲)。