☰
信号与系统时域分析:冲激响应、卷积与系统响应求解
2026/10/26 6:50:40 网站建设 项目流程

信号与系统这门课里,时域分析是最先上手、也最容易“看着会、动手错”的一块。它要解决的事情很朴素:给定一个输入信号和一个系统,在时间轴上把输出算出来,并且说清楚系统本身具备什么性格。冲激响应、卷积、微分方程、零输入与零状态响应、相关分析、采样定理,这些名词基本构成了时域分析的全部骨架。它适合刚接触信号分析与处理的本科生打地基,也适合已经工作、需要用卷积思维去看滤波器、去理解传感器数据的人回头补课。下面这份梳理,是我自己反复做题、反复给别人讲题之后整理出来的版本,重逻辑、重动手、重踩坑点,公式只留真正要用的那些。

1. 先把时域分析的定位想清楚

很多人一上来就背卷积公式,背完发现题目稍微一变就无从下手。问题不在公式,在于没搞清楚时域分析在整个体系里到底负责哪一段。我的建议是,动手算之前先花十分钟把下面这几件事想明白,后面所有推导都会顺很多。

1.1 时域分析在整门课里站在什么位置

信号分析与处理通常有三条主线:时域、频域、复频域。时域分析是唯一一个“全程不换坐标系”的方法,横轴始终是时间,你看到的波形形状、起跳点、持续时间、衰减快慢,都是物理上可直接测量的量。频域把信号拆成正弦成分,回答“这个信号里有哪些频率”;复频域用拉普拉斯变换或 z 变换,回答“系统在什么条件下会失控”。而时域回答的是最直接的那个问题:当前时刻的输出,是由过去哪些输入、以多大权重叠加出来的。

这个定位决定了时域分析的强项和短板。强项是物理意义清楚,任何一个中间结果都能对着示波器解释;短板是计算量大,尤其遇到复杂输入,积分会做到让人怀疑人生。所以工程上的常规做法是:用频域或复频域做设计,用时域做验证和解释。你在时域里算出的冲激响应,和频域里算出的系统函数是一对变换关系,两边必须对得上。我习惯在做完频域题之后,回到时域用卷积或者阶跃响应做一次交叉检验,这一步能抓出绝大多数符号错误。

时域分析还有一层容易被忽略的价值:它是理解“记忆”这个概念的唯一起点。一个系统有记忆,意思是当前输出依赖过去的输入;这个依赖关系在时域里被卷积完整地写了出来。等你以后接触自适应滤波、回声消除、信道均衡,会发现它们本质上都是在处理同一个问题——如何用一段有限的历史去逼近一个无限的卷积和。

1.2 线性时不变这条主线,是所有公式的来源

整块内容里出现频率最高的四个字是“线性时不变”(LTI)。所有的卷积公式、所有的冲激响应描述、所有的零状态响应求解,全部建立在 LTI 这个前提上。反过来讲,一旦系统不满足线性或者不满足时不变,前面那套东西就整体失效,必须回到原始定义一点点推。

线性包含两件事:齐次性和可加性。输入放大三倍,输出也放大三倍;两个输入分别作用的结果相加,等于两个输入相加后作用的结果。判断的时候有个很实用的技巧:看系统表达式里有没有常数项、有没有对输入做非线性运算、有没有把输入和它自己相乘。y(t)=3x(t)+2 不是线性的,那个 2 是零输入响应,不随输入变化;y(t)=x²(t) 不是线性的;y(t)=x(t)·x(t-1) 也不是。

时不变的意思是,输入整体延迟 t0,输出也只是整体延迟 t0,波形形状一模一样。判定方法是把 x(t) 换成 x(t-t0) 算一遍输出,再把原输出整体延迟 t0 算一遍,两者对比。y(t)=x(2t) 就是典型的时变系统:输入延迟后输出被压缩了两倍,形状变了。这个点每年都有人错,因为它在形式上很像线性运算,容易顺手就判成时不变。

我把这条主线总结成一句话:LTI 是“输入分解 + 响应叠加”这套方法能成立的许可证。你把输入拆成一堆冲激,每个冲激产生的响应都相同只是位置不同,再把它们叠起来,就有了卷积。如果系统时变,不同时刻的冲激响应长得不一样,这套拆法立刻垮掉。

1.3 连续与离散:两套工具,一套逻辑

连续时间用积分,离散时间用求和,符号从 ∫ 变成 Σ,从 δ(t) 变成 δ[n],从 h(t) 变成 h[n]。表面上像两门课,其实逻辑完全同构。我建议学的时候并排着看,把连续里的每个结论都在离散里找一遍对应,效率会高很多。

对照关系大致是这样:连续卷积是 ∫x(τ)h(t-τ)dτ,离散卷积和是 Σx[k]h[n-k];连续系统的稳定性判据是冲激响应绝对可积,离散是绝对可和;连续微分方程对应离散差分方程;连续里的单位冲激 δ(t) 是个广义函数,靠抽样性质定义,而离散里的 δ[n] 是个老老实实的数列,n=0 时为 1,其余为 0,不存在任何数学上的别扭。

这里有个思维习惯值得早点建立:离散信号本质上是一个数列,索引 n 只能取整数,画图时是一根根竖线而不是连续曲线。很多人在离散卷积里犯错,就是因为脑子里还留着连续图像的印象,把求和当成积分去做,把“平移一个单位”理解成“平移任意小量”。记住 n 是整数索引,平移量必须是整数,这一步想通了,离散这块会顺很多。

2. 基本信号与信号运算:看着简单,错得最多

基本信号是整块内容的积木,信号运算是把这些积木摆到正确位置的手法。这两样东西在教材里往往只占十几页,但真正做综合题时,九成的错误都出在这里。我自己总结的经验是:卷积可以算错,但信号的变换顺序和定义域绝不能错,因为前者是技术问题,后者是根基问题。

2.1 四类基本信号和它们的工程含义

教材里列的基本信号不少,真正高频使用的就四类,每一类都对应一种实际的物理场景,记住场景比记住公式有用。

信号数学表达对应的物理场景
单位阶跃u(t),t<0 为 0,t>0 为 1开关在 t=0 合上,电压突然加上
单位冲激δ(t),只在 t=0 有值,面积为 1极短极强的脉冲:锤击、放电、雷击
实指数e^{at}·u(t)RC 电路放电、阻尼衰减过程
正弦/余弦cos(ωt)、sin(ωt)稳态测试信号、交流供电

阶跃信号在工程里的地位被严重低估了。它不只是一种理想信号,更是“从某个时刻开始”这个语义的数学写法。任何带 u(t) 的表达式,都在告诉你“这件事从 t=0 开始发生”。做题时看到 u(t) 就要立刻反应过来:积分下限可以收到 0,不用从负无穷积起,这一步能省掉大量无效运算。

冲激信号是最抽象的,也是最有用的。它的定义不是靠“t=0 时函数值无穷大”这种模糊说法,而是靠两条性质:t≠0 时为零,全时间轴积分为 1。所有关于冲激的计算,都必须回到这两条或者由它们推出的抽样性质上,不能靠函数值的直觉去推。

实指数 e^{at} 的符号决定命运:a 为负数,信号衰减,系统稳定;a 为正数,信号发散,系统不稳定。这个判断在后面分析自然响应模式时会反复出现。正弦信号则要注意它和复指数 e^{jωt} 的关系,欧拉公式把两者连起来,这是通往频域的桥。

2.2 平移、反转、尺度变换的动手顺序

这是全章最容易翻车的地方,没有之一。f(at+b) 这种形式,先做哪一步、后做哪一步,结果完全不同。我的做法固定成一条规则:先把括号里的表达式整理成 a(t - t0) 的形式,看清真正的平移量,再决定操作顺序。

举个具体的:f(-2t+4)。先在括号里提公因子,写成 f(-2(t-2))。这个形式告诉你三件事:反转(负号)、压缩两倍(系数 2)、右移 2(常数项 2)。操作时按“先平移,后反转压缩”的顺序,把 f(t) 右移 2 得到 f(t-2),再把其中的 t 换成 -2t,得到 f(-2t+4),与目标一致。

反过来做就容易错。常见错法是:看到 f(-2t+4),先压缩两倍得到 f(2t),再右移 4,得到 f(2t-8),和目标差了整整一倍。根源在于压缩之后时间轴的单位变小了,原来的一格现在只相当于半格,平移量必须跟着换算。

我把这个坑写成一句口诀贴在笔记本上:先看整体平移量,再做反转与压缩;先做压缩再平移,平移量要除系数。这个规则在离散信号里同样适用,只是平移量必须是整数,遇到非整数平移说明题目本身有笔误。

还有一个细节:反转和压缩可以交换顺序,因为它们都是对变量 t 做代换,不涉及加减常数。但平移和压缩不能随便换,原因就是上面说的单位换算问题。

2.3 冲激函数那几个反直觉性质

冲激函数的性质不多,但每一条都值得单独记,因为考试和工程里都爱考能用。

第一条是偶函数性质 δ(-t)=δ(t)。这条看起来平平无奇,但它说明冲激在时间轴上是对称的,反转操作对它无效。很多人下意识觉得“反转应该变号”,在这里会出错。

第二条是抽样性质,∫f(t)δ(t-t0)dt = f(t0),积分区间只要包含 t0。这条是整个信号处理里最实用的性质之一,它把“对一个函数做积分”简化成“取一个点的值”。使用时要注意 f(t) 在 t0 处必须连续,否则结果要按左右极限讨论。

第三条是尺度性质 δ(at) = δ(t)/|a|。系数在分母上,而且带绝对值。这条经常被漏掉,导致含缩放的卷积结果差一个倍数。举个例子,δ(2t) 的面积不是 1,而是 1/2,所以它等于 0.5δ(t)。

第四条是冲激与阶跃的微积分关系:u(t) 求导得 δ(t),δ(t) 积分得 u(t)。这是连接两者的桥梁,也是理解“奇异函数匹配”的钥匙。含冲激的微分方程求解,靠的就是这条关系把两边的奇异项对齐。

注意:冲激函数的这些性质都是在对它做积分或者与连续函数相乘时才成立的。单独讨论 δ(t) 在某点的函数值没有意义,见到“δ(0) 等于多少”这类问题,正确的回答是不讨论函数值,只讨论面积和作用效果。

3. 卷积:时域分析的心脏

如果只能保留一个知识点,我会保留卷积。它既是时域分析的核心运算,也是把“输入”“系统”“输出”三者绑在一起的唯一纽带。学不好卷积,后面的系统响应、滤波器设计、相关分析全都接不上。

3.1 卷积到底在算什么

卷积的数学定义是 y(t) = ∫x(τ)h(t-τ)dτ。光看这个式子很难有感觉,换个说法:当前时刻的输出,是把过去每一个时刻的输入值,乘以系统对该时刻输入的记忆权重,然后全部加起来。

这里的 h(t-τ) 就是那个权重。它告诉你:τ 时刻发生的一个输入,经过 (t-τ) 这么长时间之后,还剩下多少影响力。h 衰减得快,系统记忆短,输出只跟最近的输入有关;h 衰减得慢,系统拖尾长,很久以前的输入还在影响现在。这就是“记忆”的量化表达。

用生活里的例子类比:往平静水面扔石子,每次扔下去产生一圈涟漪,涟漪随时间扩散并逐渐变弱。现在不是扔一颗,而是每隔一小段时间扔一颗,那么某一时刻水面的总起伏,就是所有已扔石子产生涟漪在这一刻的叠加。每颗石子产生的涟漪形状相同(时不变),整体幅度正比于石子大小(线性),叠加过程就是卷积。

这个类比里有个关键点值得强调:卷积不是简单的乘积后求和,而是要把 h 先反转再平移。反转这一步对应“时间倒流”,意思是问“过去发生的事对现在还有多少影响”,方向必须是往回看的。很多人记不住为什么要反转,就是因为没想清楚这个方向性。

卷积还有几个立刻能用的结论:两个信号卷积后的持续时间,等于两者持续时间之和;卷积结果的面积,等于两个信号面积之积;如果两个信号都是矩形,卷积结果是梯形或三角形,形状由两个矩形的宽度关系决定。这三个结论在做选择题和快速估算时非常省时间。

3.2 图解法的五步和一个完整算例

图解法是理解卷积最好的工具,虽然实际计算中未必最快,但它能让你看清积分限是怎么来的。标准五步是:换元、反转、平移、相乘、积分。

  • 换元:把 x(t) 写成 x(τ),h(t) 写成 h(τ);
  • 反转:把 h(τ) 变成 h(-τ),图像左右翻转;
  • 平移:把 h(-τ) 平移 t,得到 h(t-τ),t 从小往大扫;
  • 相乘:在每一段 t 上,把 x(τ) 和 h(t-τ) 逐点相乘;
  • 积分:对乘积在重叠区间上积分,得到该 t 处的输出值。

关键在第 3 步和第 5 步。t 是一个滑动的参数,每滑动一点,重叠区间的端点就变一次,所以必须分段讨论。分段的依据就是两个信号“开始重叠”“完全重叠”“开始脱离重叠”这几个临界时刻。

拿一个具体算例走完整个流程。设 x(t) = u(t) - u(t-2),是一个宽度 2、高度 1 的矩形;h(t) = u(t) - u(t-1),宽度 1、高度 1。求 y(t) = x(t)*h(t)。

先判断分段点:两个信号的起始时刻相加得 0,结束时刻相加得 3,中间还有个 2。所以分成四段:t<0、0<t<1、1<t<2、2<t<3、t>3。

第一段 t<0:两个信号完全不重叠,乘积为零,y=0。

第二段 0<t<1:h(t-τ) 支撑在 [t-1, t],x(τ) 支撑在 [0, 2]。此时 t-1<0 且 t<2,重叠区间为 [0, t],长度 t。被积函数为 1×1=1,所以 y = ∫₀ᵗ 1dτ = t。

第三段 1<t<2:重叠区间为 [t-1, t],长度恒为 1,y = 1。

第四段 2<t<3:x(τ) 的上界 2 开始起作用,重叠区间为 [t-1, 2],长度 3-t,y = 3-t。

第五段 t>3:完全不重叠,y=0。

最后结果是梯形:0 到 1 线性升到 1,1 到 2 保持 1,2 到 3 线性降回 0。宽度 3 等于 2+1,峰值 1 等于 min(2,1),面积 2 等于 2×1。三个校验全部对上,说明算对了。

这个算例值得反复练,因为它把分段、积分限、校验三件事一次性串起来了。练熟之后再看更复杂的输入,套路是一样的。

3.3 离散卷积和的列表法

离散卷积和 y[n] = Σx[k]h[n-k] 用图解法画起来很别扭,因为竖线太多。工程上更常用的是列表法,也叫竖式乘法式的方法。

具体做法:把 x[n] 的各个值按顺序写成一列,把 h[n] 的各个值按顺序写在另一行,然后逐项相乘、斜着相加。举个例:x[n] 在 n=0,1,2 处为 1,2,3;h[n] 在 n=0,1 处为 1,1。

先算长度:N = 3 + 2 - 1 = 4,结果在 n=0,1,2,3 处。

逐项算:y[0]=1×1=1;y[1]=1×1+2×1=3;y[2]=2×1+3×1=5;y[3]=3×1=3。结果序列是 {1, 3, 5, 3}。

校验办法有三条:长度等于两序列长度之和减一;首项等于两个首项之积;所有项之和等于两个序列各自和之积。这里 1+3+5+3=12,而 (1+2+3)×(1+1)=6×2=12,对上。

提示:离散卷积最容易错的地方是“位置”。x[n] 从 n=0 开始、h[n] 从 n=0 开始,结果也从 n=0 开始;但如果 h[n] 是从 n=-1 开始的,结果起点就要跟着左移。做题时先标清楚每段序列的索引起点,比算乘法更重要。

顺便提一句代码验证。实际工作中我习惯用几行代码把手工结果跑一遍,确认无误再往下做。Python 下用 numpy 的 convolve 就够了:

import numpy as np x = np.array([1, 2, 3]) h = np.array([1, 1]) y = np.convolve(x, h, mode='full') print(y) # [1 3 5 3]

这段代码的作用不是替代手算,而是给自己一次交叉验证。手算容易在符号和索引上出错,机器不会,两者对上了才敢往下走。

3.4 卷积性质与速查表

卷积的性质不算多,但每一条在解题时都能省掉一大段推导。整理成表随时查:

性质表达式使用场景
交换律xh = hx哪个好算就把哪个当系统
分配律x*(h1+h2) = xh1 + xh2系统并联分解
结合律(xh1)h2 = x(h1h2)级联系统合并
与冲激卷积x(t)*δ(t-t0) = x(t-t0)直接得平移结果
与阶跃卷积x(t)*u(t) = ∫₋∞ᵗx(τ)dτ求累积量
微分性质y' = x'h = xh'含导数时化简
时移性质x(t-t1)*h(t-t2) = y(t-t1-t2)快速定位结果区间

交换律这条特别值得说。它意味着你可以自由选择把谁当作系统、谁当作输入。碰到一个复杂的 x 和一个简单的 h,直接把两者角色互换,计算量能差好几倍。这个自由度是很多人没意识到的。

与阶跃卷积那条也很实用:一个信号和阶跃卷积,等于对信号做一次变上限积分。这个结论在求零状态响应时经常用,尤其在已知系统阶跃响应而不是冲激响应的场合。

3.5 算完怎么验证,三个习惯

我给自己定了三个验证习惯,执行了这么多年,抓错率很高。

第一个习惯是算面积。卷积结果的面积必须等于两个信号面积的乘积,这个关系是硬性的,差一点就说明中间有步骤错。面积可以直接从最终表达式积分得到,也可以通过图形估算。

第二个习惯是看宽度。两个有限长信号卷积,结果宽度等于两者之和。如果算出来的结果比自己预期的窄或宽,基本可以确定分段点错了。

第三个习惯是看连续性。两个矩形卷积得到的是连续折线,两个冲激卷积得到的是冲激,一个有跳变的信号和冲激卷积后跳变被“搬”到新位置。结果的连续性和可导性,跟两个输入的性质有明确的对应关系,用这个反推能发现很多符号问题。

4. LTI 系统的时域描述与响应求解

卷积解决的是“已知 h 求输出”,但 h 本身从哪来?系统还有哪些性格需要描述?这部分就是系统时域分析要回答的。

4.1 四大性质的判定套路

线性、时不变、因果、稳定,这四条是系统分析的基本盘。前面说过线性和时不变的判定,这里重点说因果和稳定,因为这两条有非常直接的冲激响应判据。

因果性的判据是 h(t)=0 对所有 t<0 成立。物理含义是系统不能预知未来。判断一个系统是否因果,看它的输出是否用到未来的输入,y(t)=x(t+1) 就是非因果的,因为 t 时刻的输出用到了 t+1 时刻的输入。工程上非因果系统不能实时实现,但在离线处理里完全合法,比如图像处理中的对称滤波,用到了“未来”的像素,这在实际中是可以做的,因为整幅图已经在内存里了。

稳定性的判据是冲激响应绝对可积:∫|h(t)|dt < ∞,离散情况下是 Σ|h[n]| < ∞。这个条件叫有界输入有界输出稳定,简称 BIBO 稳定。它的意义是:只要输入不超过某个范围,输出也不会无限增大。

这里有个常见的误解:认为“极点都在左半平面”就是稳定判据。这句话在因果系统里是对的,但脱离了因果前提就不成立。更准确的说法是,稳定性的根本判据是冲激响应绝对可积,极点位置只是这个判据在有理系统下的等价表述。做题时如果题目没说是因果系统,别急着用极点位置下结论。

判定时还有几个容易踩的陷阱:y(t)=x(t)cos(ωt) 是线性的但时变;y(t)=x²(t) 是无记忆的但非线性;y(t)=∫₋∞ᵗx(τ)dτ 是线性时不变因果的,但不稳定,因为阶跃输入会让输出无限增长。这几类题在判断题里出现频率极高。

4.2 冲激响应与阶跃响应

冲激响应 h(t) 是系统在零状态条件下对 δ(t) 的响应。它完整刻画了一个 LTI 系统,知道了 h 就等于知道了系统的全部信息。这句话不是夸张,因为任意输入都能分解成冲激的叠加,响应自然就是 h 的卷积。

阶跃响应 s(t) 是对 u(t) 的响应。两者关系非常直接:s(t) 是 h(t) 的积分,h(t) 是 s(t) 的导数。s(t)=∫₋∞ᵗh(τ)dτ,h(t)=ds(t)/dt。

这个关系在实际测量里特别有用。冲激信号在物理上很难真正产生,因为需要无穷大的幅度和零宽度,实际能做到的只是一个很窄的脉冲。但阶跃信号很容易产生,一个开关就够了。所以工程上常常先测阶跃响应,再求导得到冲激响应。求导这一步在数值上会有噪声放大问题,实际处理时要先做平滑或者改用其他辨识方法,这是书本上不会提的细节。

拿一个具体例子算一遍。RC 低通电路,输入电压为 x(t),输出电压为 y(t),满足微分方程 RC·y'(t) + y(t) = x(t)。求冲激响应:令 x(t)=δ(t),解方程得 h(t) = (1/RC)e^{-t/RC}u(t)。求阶跃响应:对 h 积分,s(t) = (1 - e^{-t/RC})u(t)。

验算一下:t=0 时 s=0,t→∞ 时 s→1,符合“电容电压从零充到输入电压”的物理直觉。时间常数 RC 越小,充电越快,这也和直觉一致。这个例子把微分方程、冲激响应、阶跃响应三者串起来了,是理解整块内容的最好载体。

4.3 微分方程的经典解法

连续系统的时域描述常常以微分方程的形式给出,比如 y''(t) + 3y'(t) + 2y(t) = x'(t) + 2x(t)。解这类方程有两条路:经典法和卷积法。

经典法的结构是:完全解 = 齐次解 + 特解。齐次解对应特征方程 s²+3s+2=0 的根,得 s=-1 和 s=-2,所以齐次解形式是 C₁e^{-t} + C₂e^{-2t}。特解的形式由输入决定,输入是常数则设常数,输入是指数则设同形式的指数,输入是多项式则设同阶多项式。把特解代回原方程定出系数,再用初始条件定 C₁ 和 C₂。

这条路能走通,但有个隐藏的坑:初始条件到底是 0₋ 还是 0₊。如果方程右边没有冲激或者冲激的导数,两者相同;如果有,0₊ 时刻的状态会跳变,必须先用奇异函数匹配法求出跳变后的值。这一步在教材里往往一笔带过,实际做题时却是最容易丢分的地方。

匹配法的思路是:假设解在 t=0 附近有冲激项,把解代入方程,让两边的 δ 项、δ' 项分别对齐,从而定出跳变量。比如方程 y' + 2y = δ(t),假设 y 含有 a·u(t) 这样的跳变,代入后左边出现 a·δ(t),与右边的 δ(t) 对应,得 a=1,所以 y(0₊)-y(0₋)=1。这个技巧需要练几遍才有手感,但一旦掌握,含冲激输入的题会变得非常套路化。

我更推荐的是卷积法:先求 h(t),再算 y = x*h。它绕开了初始条件跳变这个麻烦,因为卷积法求的是零状态响应,初始状态默认为零。两条路的适用范围不同:求零输入响应只能用经典法,求零状态响应用卷积法更省事。

4.4 零输入响应和零状态响应

这是时域分析里概念性最强的一节,也是考试重点。把完全响应拆成两部分:

  • 零输入响应:没有输入,只靠系统内部的初始储能产生的响应。它满足齐次方程,形式由特征根决定,系数由初始状态决定。
  • 零状态响应:初始状态为零,只由输入引起的响应。它等于输入与冲激响应的卷积。

两者相加就是完全响应。这个分解的意义在于,它把“系统自己会怎么动”和“外界让它怎么动”彻底分开了。工程上这个区分极其重要:零输入响应是系统的固有振荡,无法通过改变输入消除,只能通过改变系统参数或初始状态处理;零状态响应是可控部分,设计控制器时主要针对它。

还有一个常被混淆的分类:自然响应与受迫响应,以及瞬态响应与稳态响应。自然响应的函数形式由特征根决定,受迫响应的形式由输入决定,这是按“形状来源”分类;瞬态响应是随时间衰减到零的部分,稳态响应是长期留下来的部分,这是按“时间行为”分类。四种叫法两两组合,容易绕晕,做题时先看清楚题目问的是哪一种分解。

用一个完整例子走一遍。系统方程 y'(t) + 2y(t) = x(t),初始条件 y(0₋)=1,输入 x(t)=e^{-t}u(t)。求完全响应。

零输入响应:解 y'+2y=0,得 y_zi(t)=Ce^{-2t},代入 y(0)=1 得 C=1,所以 y_zi=e^{-2t}u(t)。

零状态响应:先求 h(t)=e^{-2t}u(t),再算卷积 y_zs = ∫₀ᵗ e^{-2τ}·e^{-(t-τ)}dτ = e^{-t}∫₀ᵗe^{-τ}dτ = (e^{-t} - e^{-2t})u(t)。

完全响应:y = e^{-2t} + e^{-t} - e^{-2t} = e^{-t}u(t)。

验算:t=0 时 y=1,与初始条件一致;把 y=e^{-t} 代入方程,左边 -e^{-t}+2e^{-t}=e^{-t},等于右边,正确。这个例子干净利落,建议手推三遍。

4.5 差分方程与递推求解

离散系统的时域描述是差分方程,形如 y[n] + a₁y[n-1] = b₀x[n] + b₁x[n-1]。求解方式有两类:递推法和经典法。

递推法最直观:把方程改写成 y[n] = -a₁y[n-1] + b₀x[n] + b₁x[n-1],从 n=0 开始一项一项往后推。已知初始状态和输入序列,就能算出任意时刻的输出。这个方法适合手算前几项找规律,也适合写程序实现,缺点是得不到闭式表达式。

求冲激响应也可以用递推。令 x[n]=δ[n],初始状态为零,则 h[0]=b₀,h[1]=-a₁b₀+b₁,后面按递推继续。如果方程是一阶的 y[n]-0.5y[n-1]=x[n],则 h[n]=0.5ⁿu[n]。

拿到 h[n] 之后要做稳定性判断:Σ|0.5ⁿ| = 2 < ∞,所以稳定。这个判据在离散里比连续里更直观,因为求和看得见摸得着。如果系数是 2 而不是 0.5,h[n]=2ⁿu[n],求和发散,系统不稳定,这也和“极点跑到单位圆外”的结论一致。

差分方程这部分还有个实用技巧:如果题目只问稳态响应,且输入是正弦序列,可以跳过整个递推过程,直接用频率响应算幅度和相位。这个做法在频域章节会正式讲,但时域做题时已经可以偷用,能省大量时间。

5. 时域的两个延展:相关分析与采样

卷积之外,时域分析还有两个常被单独拎出来的主题:相关和采样。它们看起来是独立章节,其实都是时域思维的直接延伸。

5.1 自相关与互相关

相关运算衡量的是两个信号的相似程度。互相关定义为 R_xy(τ) = ∫x(t)y(t-τ)dt,自相关是 y 取 x 的特例。它和卷积的形式几乎一样,唯一的区别是卷积要反转,相关不反转。

这个差别带来的物理含义是:卷积描述系统对输入的作用,相关描述两个信号在时间错位下的匹配程度。相关在 τ=0 附近取最大值,说明两个信号最相似;峰值位置告诉你需要把 y 平移多少才能和 x 对齐。雷达测距、信号同步、噪声中提取周期成分,用的都是这个原理。

自相关有几个必须记住的性质:R_xx(0) 等于信号的总能量;R_xx(τ) 是偶函数(实信号);|R_xx(τ)| ≤ R_xx(0),在 τ=0 处取最大值。最后这条说明自相关是“自己和自己最像”,符合直觉。

工程上相关分析最常见的用途是从噪声里找周期。一个被噪声淹没的周期信号,单看波形看不出周期,但做自相关之后,周期性的峰会在延迟轴上反复出现,周期一目了然。这个方法的原理是噪声在时间上不相关,延迟后相乘积分会互相抵消,而周期信号在自己和自己延迟整数倍周期时高度相关。

5.2 采样定理的时域视角

采样定理通常放在频域讲,但从时域看更直观。采样就是用一串等间隔的冲激去乘连续信号,得到 x(nT)。采样间隔 T 太小,数据量大;T 太大,信号细节丢失。临界点是奈奎斯特条件:采样频率 fs 必须大于信号最高频率 fmax 的两倍。

为什么是两倍?时域的解释是:要准确描述一个正弦波,每个周期至少要采到两个点,才能确定它的幅度和相位。少于两个点,你就分不清它是高频还是低频,这就是混叠。混叠的本质是“不同频率的信号采样后长得一模一样”,比如 fs=100Hz 时,30Hz 和 70Hz 的正弦采出来的序列完全相同,你无法从数据里判断原始是哪一个。

举个工程上的参数选择例子。某振动传感器用于监测设备状态,关心的频率成分最高到 500Hz。按定理,采样率下限是 1000Hz。但实际不会卡着下限取,因为抗混叠滤波器有过渡带,不是理想砖墙。我的习惯是取 4 到 5 倍,也就是 2kHz 到 2.5kHz,给滤波器留出足够的衰减空间。这个做法在书本上不写,但现场调试时非常关键,取 1kHz 往往会在频谱上看到假的低频成分。

注意:采样之前必须先做抗混叠滤波,顺序不能反。先采样再滤波是无效的,因为混叠一旦发生,高频成分已经伪装成低频混进了数据里,再怎么滤也分不开。这个顺序在硬件设计里必须写进流程。

采样定理还有一层时域含义:采样后的信号能完全恢复原信号,前提是满足奈奎斯特条件。恢复用的理想低通滤波器在时域上是 sinc 函数,这解释了为什么插值要用 sinc 核,也解释了为什么实际插值会用各种近似窗函数——因为理想 sinc 在时域上是无限长的,不可实现。

6. 常见问题与排查实录

讲到这里,主要知识点已经走完。但真正让人卡住的往往不是概念,而是某些具体的、反复出现的操作错误。这一节把最常见的几类整理成速查表,并补充几条只有实际动过手才会知道的细节。

6.1 常见错误速查表

现象最可能的原因处理办法
卷积结果区间不对平移量没有按尺度系数换算先把表达式整理成 a(t-t0) 形式
卷积结果差一个倍数漏掉了 δ(at)=δ(t)/a
离散卷积长度少一项忘记 N1+N2-1用首项、面积两项校验
零状态响应初值不为零把卷积下限写成了 -∞确认 x 和 h 都含 u(t),下限收 0
完全响应与初始条件不符0₋ 和 0₊ 混用有冲激输入时先做跳变匹配
稳定性判断出错用极点位置代替了绝对可积判据先确认系统是否因果
采样后出现假低频采样率不够或未做抗混叠提高到 4 到 5 倍并前置滤波
自相关峰值不在零点信号含直流或趋势项先去均值再做相关

这张表是我这些年攒下来的,每一条都对应过至少一次真实的卡壳。建议做题时卡住了先扫一遍,比从头重推快得多。

6.2 几个踩过的坑

第一个坑是卷积的积分限。教科书上写“在两个信号重叠区间积分”,但重叠区间怎么定,很多人是靠感觉。我的做法是老老实实画三张图:x(τ) 的支撑区间、h(t-τ) 的支撑区间、两者交集。交集的两个端点都用 t 表示出来,就是积分限。这个笨办法从没让我失望过,比凭感觉快。

第二个坑是把离散信号的索引当成连续变量处理。离散里 n 只能取整数,卷积里的平移也必须是整数步。有次算一个移位后的序列,把 h[n-2] 的起点搞错了,一路错到底。后来养成习惯:写离散卷积之前先把每个序列的索引起点和终点标在纸上,用方括号写清楚,比如 x[0..2]、h[-1..1],比什么都管用。

第三个坑是关于阶跃响应的测量。理论上 h 是 s 的导数,实际测出来的 s 带噪声,直接差分出来的 h 全是毛刺。后来改用先平滑再差分,或者干脆在频域做除法,效果好了很多。这件事让我意识到,教材里的每一条“可以求导得到”,背后都藏着一个数值稳定性的前提,实际做的时候要多想一步。

第四个坑是相关和卷积的混淆。两者的公式长得太像,做雷达或通信类题目时经常把反转漏掉,导致峰值位置偏了一倍。判别方法很简单:问自己“这个运算是要找相似度还是要算系统响应”,找相似度用相关,算响应用卷积,先定性再套公式。

第五个坑是采样率的选择。有过一次现场数据频谱上出现了一个明显的低频峰,查了很久发现是传感器的高频噪声混叠下来的。把采样率提高一倍之后峰就消失了。这个教训让我在以后所有采集方案里都留足余量,并且一定在 ADC 前面加抗混叠滤波,哪怕理论上“刚好够”。

我个人在实际操作中的体会是,时域分析这部分内容,公式记不牢可以查,但分段的思想、校验的习惯、以及与物理场景的对应关系这三样东西必须长在脑子里。卷积算到最后其实是在考你对信号边界的敏感度,系统分析考的是你对因果和稳定这两个词的理解深度。每次算完不要急着写答案,花三十秒做面积、宽度、连续性三项校验,能省掉后面大量的返工。至于那些看着很绕的变换顺序和冲激性质,多做几道带缩放的题,手感自然就出来了,光看是看不出来的。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询