求脉冲响应函数,核心做法是让线性时不变系统在零初始条件下输入一个单位脉冲信号,记录对应输出;离散系统得到脉冲响应序列 h[n],连续系统得到脉冲响应函数 h(t)。具体路径有差分方程递推、传递函数反变换、状态空间公式、实验测量四种,选择哪种取决于手头资料是方程、H(s)、H(z)、A/B/C/D矩阵还是实测数据。下面给出可直接套用的内容。
适用前提
- 系统属于线性时不变类别。
- 输入信号选择单位脉冲:离散用 δ[n],连续用 δ(t)。
- 初始条件设为零。
- 输出记录与输入一一对应,形成响应序列或函数。
方法一:从差分方程求离散 h[n]
以 y[n] - 0.5 y[n-1] = x[n] 为例。
按下面顺序处理:
- 令输入 x[n] = δ[n],也就是 n=0 时值为1,其他点值为0。
- 令初始状态 y[-1]=0。
- 逐点递推,计算每个 n 的输出 y[n]。
- 把得到的 y[n] 记为 h[n]。
| n | δ[n] | h[n] |
|---|---|---|
| 0 | 1 | 1 |
| 1 | 0 | 0.5 |
| 2 | 0 | 0.25 |
| 3 | 0 | 0.125 |
整理可得:
h[n] = 0.5^n u[n]
方法二:从传递函数求脉冲响应
离散系统常用 H(z) 表示:
H(z) = Y(z) / X(z)
当输入为单位脉冲时,X(z)=1,因此:
Y(z) = H(z)
对 H(z) 做逆Z变换,得到 h[n]。
示例:
H(z) = 1 / (1 - 0.5 z^{-1})
求逆Z变换后得到:
h[n] = 0.5^n u[n]
连续系统常用 H(s) 表示:
H(s) = Y(s) / X(s)
当输入为连续单位冲激信号 δ(t) 时,X(s)=1,因此:
Y(s) = H(s)
对 H(s) 做逆拉普拉斯变换,得到 h(t)。
示例:
H(s) = 1 / (s + 1)
求逆拉普拉斯变换后得到:
h(t) = e^{-t} u(t)
方法三:从状态空间求离散脉冲响应
若离散状态空间模型写成:
x[n+1] = A x[n] + B u[n]
y[n] = C x[n] + D u[n]
输入为单位脉冲 u[n] = δ[n],初始状态 x[0]=0。
| 时刻 | 输出表达式 |
|---|---|
| n=0 | h[0] = D |
| n≥1 | h[n] = C A^{n-1} B |
方法四:从实测数据求脉冲响应
现场测试时,给系统输入一个短脉冲信号,采集系统输出,记录输入输出关系,得到脉冲响应。常用记录方式如下:
| 场景 | 输入 | 输出记录 | 表示形式 |
|---|---|---|---|
| 离散系统 | δ[n] | y[n] | h[n] |
| 连续系统 | δ(t) | y(t) | h(t) |
| 多输入多输出系统 | 单位脉冲向量 | 输出向量 | 矩阵或数组 |
结果整理
| 对象 | 常用写法 | 说明 |
|---|---|---|
| 离散脉冲响应 | h[n] | 用序列表示 |
| 连续脉冲响应 | h(t) | 用函数表示 |
| 传递函数法 | H(z) 或 H(s) | 通过反变换得到响应 |
| 状态空间法 | A、B、C、D | 通过矩阵公式得到响应 |
常见问题
问题1:脉冲响应函数怎么求更适合刚学信号与系统?
回答1:脉冲响应函数怎么求时,先从差分方程递推入手更直观。输入 δ[n],从 n=0 开始逐点算输出,得到的序列就是脉冲响应 h[n]。这种方法适合理解脉冲响应函数怎么求的基本过程。
问题2:脉冲响应函数怎么求连续和离散方式有什么区别?
回答2:脉冲响应函数怎么求在连续系统里输入 δ(t),通过逆拉普拉斯变换得到 h(t);脉冲响应函数怎么求在离散系统里输入 δ[n],通过逆Z变换得到 h[n]。两者都围绕线性时不变系统展开。
问题3:脉冲响应函数怎么求MATLAB或Python怎么做?
回答3:脉冲响应函数怎么求时,Python可用 scipy.signal.impulse 或 scipy.signal.dimpulse 记录输出,MATLAB可用 impulse 或 impz 得到响应序列。输入模型后,软件会按脉冲响应函数怎么求的数学规则直接给出 h[n] 或 h(t)。
问题4:脉冲响应函数怎么求时初始状态怎么处理?
回答4:脉冲响应函数怎么求时,通常把初始状态设为零。这样得到的 h[n] 或 h(t) 反映的是系统本身对单位脉冲输入的响应特征,便于脉冲响应函数怎么求后的后续卷积计算和系统分析。
免责声明:本文用于技术思路说明,工程落地请以实测数据和正式验证结果为准。


