结合冲激导数的连续信号卷积:公式推导与Python验证
2026/9/7 2:31:50 网站建设 项目流程

结合冲激导数的连续信号卷积运算,是信号与系统复习里一道典型的分水岭。普通连续信号的卷积,可以用“翻转、平移、相乘、积分”这套图形流程解决;可一旦卷积因子里出现 ( \delta'(t) ) 这种广义函数,图形法会立刻失真,因为冲激偶翻转之后并不是普通函数图像。2024年西安理工大学考研真题中这一小问,被收录在小马哥960题的第1.3题位置,题目本身不算长,但它把卷积定义、筛选性质、微积分性质、时移性质和分段信号化简全部串在一起,非常适合作为理解这类题型的切口。这篇文章不讲泛泛的理论,而是直接给出一道与真题同类型的完整例题,从概念、公式、两种以上推导方法,到 Python 数值自检,把“结合冲激导数的连续信号卷积”讲透,让你在考场上遇到同类题时能按固定流程写出结果。

1. 先看这道题考查的核心:连续信号卷积与冲激导数

1.1 卷积定义与图形法的适用边界

连续时间卷积的定义是:

[ y(t)=x(t)*h(t)=\int_{-\infty}^{+\infty}x(\tau)h(t-\tau),d\tau ]

它描述的是一个信号经过一个线性时不变系统后,输出等于输入信号与系统冲激响应的卷积。图形法的标准步骤是:把 ( h(\tau) ) 翻转成 ( h(-\tau) ),再平移得到 ( h(t-\tau) ),然后与 ( x(\tau) ) 相乘,最后对 ( \tau ) 积分。这个流程对两个普通的分段连续信号非常有效,比如门函数与门函数卷积、门函数与指数信号卷积、三角波与方波卷积。

但图形法有一个隐含前提:参与翻转、平移、相乘的信号都能画成普通的函数图像。( \delta(t) ) 还可以用“箭头+面积”表示,勉强能画;到 ( \delta'(t) ) 这种冲激偶,画图就非常别扭,因为冲激偶的正、负两个极值在极限中同时趋向无穷,翻转后的图像也并不是直观函数。更麻烦的是,在分段点附近,乘积和积分的结果很难用普通几何面积解释。

所以,遇到“结合冲激导数的连续信号卷积”,正确的策略不是硬画图,而是回到卷积的代数性质,把广义信号部分先剥离出来,用公式直接化简。

1.2 冲激函数、冲激偶、冲激高阶导数怎么理解

单位冲激函数 ( \delta(t) ) 的核心性质是筛选性:

[ \int_{-\infty}^{+\infty} f(\tau)\delta(\tau),d\tau=f(0) ]

它表示“在 0 点把函数值取出来”。冲激偶 ( \delta'(t) ) 是 ( \delta(t) ) 的一阶分布导数,它也有一种筛选性,但形式是:

[ \int_{-\infty}^{+\infty} f(\tau)\delta'(\tau),d\tau=-f'(0) ]

注意这里有一个负号。原因是分布导数满足“把导数转移到被积函数上”的规则,积分后得到 ( -f'(0) )。在直观上可以把冲激偶理解为“一正一负两个宽度趋近于 0、高度趋近于无穷的矩形脉冲的极限”,所以它天生带有方向性,不再像 ( \delta(t) ) 那样是偶函数。

与卷积结合时,最重要的结论是:

[ f(t)*\delta(t)=f(t) ]

[ f(t)*\delta'(t)=f'(t) ]

[ f(t)*\delta^{(n)}(t)=f^{(n)}(t) ]

如果带有延迟,则:

[ f(t)*\delta^{(n)}(t-t_0)=f^{(n)}(t-t_0) ]

很多初学者会纠结:筛选积分公式里明明有负号,为什么卷积公式里没有负号?原因是在卷积积分中,积分变量是 ( \tau ),而信号自变量是 ( t ),换元过程中负号被抵消了一次。可以简单记忆为:遇到卷积里的 ( \delta'(t-t_0) ),就相当于对信号 ( f(t) ) 求导并延迟到 ( t_0 )。

1.3 这类题的解题主线

无论题目怎么变化,这类题的解题主线是固定的:

  1. 识别出奇异信号,也就是 ( \delta(t) )、( \delta'(t) )、( \delta''(t) ) 这类广义函数。
  2. 用卷积分配律把奇异信号所在项拆开。
  3. 对奇异信号项直接套卷积公式。
  4. 对剩余普通信号部分用图形法、公式法或微积分性质处理。
  5. 合并结果,写成分段函数,并做端点自检。

“2024年西安理工大学1.3”这个题号,从题目位置来看属于复习题集早期的基础题,但它的价值恰恰在于把上面的主线完整走了一遍,所以特别适合当作模板题来练。

2. 动手前必须默写的公式表

2.1 筛选性质与卷积性质的符号陷阱

先区分两个容易混的符号:

筛选积分公式:

[ \int_{-\infty}^{+\infty} f(t)\delta'(t-t_0),dt=-f'(t_0) ]

卷积公式:

[ f(t)*\delta'(t-t_0)=f'(t-t_0) ]

前者是“对 t 做标量积分”,后者是“对作为函数的 t 做卷积运算”,两者虽然都含 ( \delta' ),但结果一个带负号,一个不带负号,不能互相套用。验证方法非常简单,用定义写一遍:

[ f(t)*\delta'(t)=\int_{-\infty}^{+\infty}f(\tau)\delta'(t-\tau),d\tau ]

令 ( u=t-\tau ),则 ( \tau=t-u ),( d\tau=-du ),代入后整理,符号会被抵消,最后得到 ( f'(t) )。如果做题时对某个式子不放心,就用这个换元过程检查一遍。

2.2 卷积的代数、时移与微积分性质

卷积还有三个高频使用的性质。

代数性质方面,卷积满足交换律、结合律、分配律:

[ x(t)*h(t)=h(t)*x(t) ]

[ x(t)*[h_1(t)*h_2(t)]=[x(t)*h_1(t)]*h_2(t) ]

[ x(t)*[h_1(t)+h_2(t)]=x(t)*h_1(t)+x(t)*h_2(t) ]

时移性质方面,如果有:

[ y(t)=x(t)*h(t) ]

那么:

[ x(t-t_1)*h(t-t_2)=y(t-t_1-t_2) ]

也就是说,两个信号各自的延迟会叠加到输出上。

微积分性质方面,若 ( y(t)=x(t)*h(t) ),则:

[ y'(t)=x'(t)*h(t)=x(t)*h'(t) ]

更进一步,当 ( y(-\infty)=0 ) 时:

[ y(t)=x'(t)*h^{(-1)}(t) ]

其中 ( h^{(-1)}(t) ) 是 ( h(t) ) 的积分。这里要特别注意边界条件 ( y(-\infty)=0 ),否则积分会产生常数项。对 ( \delta' ) 这类广义信号积分时,也要按分布意义处理,不能把积分常数乱写成普通常数。

2.3 一张表汇总:奇异信号卷积速查表

卷积形式结果记忆要点
( f(t)*\delta(t) )( f(t) )冲激是卷积恒等元
( f(t)*\delta(t-t_0) )( f(t-t_0) )延迟
( f(t)*\delta'(t) )( f'(t) )求导,无负号
( f(t)*\delta'(t-t_0) )( f'(t-t_0) )求导并延迟
( f(t)*\delta''(t-t_0) )( f''(t-t_0) )二阶导并延迟
( f(t)*u(t) )( \int_{-\infty}^{t}f(\tau),d\tau )积分器
( f(t)*u(t-t_0) )( \int_{-\infty}^{t-t_0}f(\tau),d\tau )积分并延迟

这张表值得完整抄进复习笔记。做题之前先把表默写一遍,能避免大部分低级错误。

3. 一道同类型题完整推导

3.1 题目设定

由于原题在网络上多以标题形式流传,题干中的具体函数下标不一定完整。为了把方法完整演示出来,下面采用一道考查点一致的同类型经典题:

已知:

[ x(t)=e^{-3t}u(t) ]

[ h(t)=\delta'(t)+2\delta(t-1) ]

求:

[ y(t)=x(t)*h(t) ]

把下面例题里的系数和延迟点替换成你手中的原题数据,解题步骤完全一致。这道题的好处在于:它同时包含冲激导数 ( \delta'(t) ),又包含延迟冲激 ( \delta(t-1) ),能一次性覆盖“求导、延迟、系数缩放”三个考点。

3.2 方法一:分配律加核心公式

先把卷积按分配律拆开:

[ y(t)=x(t)*\delta'(t)+x(t)*2\delta(t-1) ]

第一部分用冲激导数卷积公式:

[ x(t)*\delta'(t)=x'(t) ]

这里 ( x(t)=e^{-3t}u(t) ) 是一个单边指数信号,在 ( t=0 ) 处有跳变,所以求导要用乘法法则:

[ x'(t)=-3e^{-3t}u(t)+e^{-3t}\delta(t) ]

注意 ( e^{-3t}\delta(t) ) 利用筛选性质可以化简为:

[ e^{-3t}\delta(t)=e^{0}\delta(t)=\delta(t) ]

所以:

[ x(t)*\delta'(t)=-3e^{-3t}u(t)+\delta(t) ]

第二部分用延迟冲激卷积公式:

[ x(t)*2\delta(t-1)=2x(t-1)=2e^{-3(t-1)}u(t-1) ]

两部分合并:

[ y(t)=-3e^{-3t}u(t)+\delta(t)+2e^{-3(t-1)}u(t-1) ]

这个结果就是最终答案。可以看到,普通部分是一个分段函数,奇异部分只在 ( t=0 ) 处出现一个单位冲激。

3.3 方法二:先对 ( h(t) ) 积分,再对 ( x(t) ) 求导

换一种角度,用卷积的微积分性质来处理。因为:

[ h(t)=\delta'(t)+2\delta(t-1) ]

对 ( h(t) ) 做一次积分:

[ h^{(-1)}(t)=\int_{-\infty}^{t}[\delta'(\tau)+2\delta(\tau-1)],d\tau ]

在分布意义下:

[ \int_{-\infty}^{t}\delta'(\tau),d\tau=\delta(t) ]

[ \int_{-\infty}^{t}2\delta(\tau-1),d\tau=2u(t-1) ]

所以:

[ h^{(-1)}(t)=\delta(t)+2u(t-1) ]

由微积分性质:

[ y(t)=x(t)*h(t)=x'(t)*h^{(-1)}(t) ]

代入 ( x'(t) ) 和 ( h^{(-1)}(t) ):

[ y(t)=[-3e^{-3t}u(t)+\delta(t)]*[\delta(t)+2u(t-1)] ]

把四项拆开看。

第一项:

[ [-3e^{-3t}u(t)]*\delta(t)=-3e^{-3t}u(t) ]

第二项:

[ \delta(t)*\delta(t)=\delta(t) ]

这里要小心,( x'(t) ) 中的 ( \delta(t) ) 与 ( h^{(-1)}(t) ) 中的 ( \delta(t) ) 卷积,结果仍然是 ( \delta(t) )。

第三项:

[ [-3e^{-3t}u(t)]*2u(t-1) ]

使用积分公式:

[ f(t)*u(t-t_0)=\int_{-\infty}^{t-t_0}f(\tau),d\tau ]

[ \int_{-\infty}^{t-1}-3e^{-3\tau}u(\tau),d\tau =\int_0^{t-1}-3e^{-3\tau}d\tau =e^{-3(t-1)}-1 ]

仅在 ( t>1 ) 时非零,所以这一项等于:

[ 2(e^{-3(t-1)}-1)u(t-1) ]

第四项:

[ \delta(t)*2u(t-1)=2u(t-1) ]

四项相加:

[ y(t)=-3e^{-3t}u(t)+\delta(t)+2(e^{-3(t-1)}-1)u(t-1)+2u(t-1) ]

后两项合并:

[ 2(e^{-3(t-1)}-1)u(t-1)+2u(t-1) =2e^{-3(t-1)}u(t-1) ]

最终:

[ y(t)=-3e^{-3t}u(t)+\delta(t)+2e^{-3(t-1)}u(t-1) ]

与方法一完全一致。方法二的好处是,把 ( h(t) ) 积分后,奇异信号变成了 ( \delta(t)+2u(t-1) ),后续每一项都更容易判断时移和区间。

3.4 方法三:直接从定义积分出发验证符号

如果对公式不放心,可以直接回到定义:

[ y(t)=\int_{-\infty}^{+\infty}x(\tau)[\delta'(t-\tau)+2\delta(t-1-\tau)],d\tau ]

先处理第一项:

[ I_1=\int_{-\infty}^{+\infty}x(\tau)\delta'(t-\tau),d\tau ]

令 ( u=t-\tau ),则 ( \tau=t-u ),代入后:

[ I_1=\int_{-\infty}^{+\infty}x(t-u)\delta'(u),du ]

利用筛选公式:

[ \int g(u)\delta'(u),du=-g'(0) ]

其中 ( g(u)=x(t-u) ),所以:

[ g'(u)=-x'(t-u) ]

[ g'(0)=-x'(t) ]

因此:

[ I_1=-(-x'(t))=x'(t) ]

第二项:

[ I_2=\int_{-\infty}^{+\infty}x(\tau)2\delta(t-1-\tau),d\tau=2x(t-1) ]

所以:

[ y(t)=x'(t)+2x(t-1) ]

与方法一的最终结果相同。这个方法最大的价值,是能直接回答“为什么卷积公式不带负号”这个问题。

3.5 结果的分段表达与三种方法对比

把最终结果整理成分段形式,便于检查各区间取值:

  • 当 ( t<0 ):( y(t)=0 )
  • 当 ( 0<t<1 ):( y(t)=-3e^{-3t} )
  • 当 ( t>1 ):( y(t)=-3e^{-3t}+2e^{-3(t-1)} )
  • 在 ( t=0 ) 处:结果中包含 ( \delta(t) )

也就是说,普通部分在 ( t=0 ) 处从左极限 0 跳到右极限 ( -3 ),所以求导时会产生冲激;这正是 ( e^{-3t}u(t) ) 在原点跳变的体现。

方法核心操作适用场景主要风险
分配律加公式拆项后直接套 ( f*\delta'=f' )奇异信号以加减项形式出现漏掉 ( u(t) ) 求导产生的 ( \delta(t) )
微积分性质先对 ( h(t) ) 积分,再对 ( x(t) ) 求导积分后信号形式更简单忘记检查边界条件
定义积分换元回到卷积定义逐步换元对公式符号不放心时计算量大,符号容易错

4. 通用解题流程与四个易错点

4.1 遇到“非普通信号”按这五步走

第一步,识别奇异信号。看到 ( \delta(t) )、( \delta'(t) )、( \delta''(t) )、( u'(t) ) 等,先圈出来。它们不能直接参与图形法。

第二步,使用分配律拆开。把卷积表达式拆成若干个小卷积,每个小卷积里尽量只保留一个奇异信号。如果奇异信号是多个项的组合,这一步尤其必要。

第三步,对含奇异信号的小卷积直接套公式。用第 2 节的速查表,能写成 ( f^{(n)}(t-t_0) ) 的形式就写成该形式。

第四步,处理普通信号部分。普通信号与普通信号之间可以用图形法或公式法;普通信号与 ( u(t) ) 之间可以使用积分公式。

第五步,合并结果并分段。把所有小卷积结果加起来,整理成关于 ( t ) 的分段表达式,标注清楚 ( t_0 ) 前后区间。最后检查端点极限是否合理。

4.2 这个题型最常踩的四个坑

错误现象可能原因正确做法
结果少了一个冲激对 ( e^{-3t}u(t) ) 求导时,忘了 ( u(t) ) 的导数会产生 ( \delta(t) )含阶跃的信号求导,务必写出 ( f(t)\delta(t) ) 项再化简
延迟全部丢失把 ( f(t)*\delta(t-t_0) ) 想当然写成 ( f(t) )结果一定是 ( f(t-t_0) ),时移不能丢
符号全部反了把筛选积分公式里的负号直接搬进卷积公式用定义换元验证,确认 ( f*\delta'=f' ) 不带负号
分段区间写错使用微积分性质时忽略了 ( u(t-1) ) 的延迟边界分段点必须与 ( t_0 ) 对齐,并且检查左右极限

其中第一个坑最值得展开。( e^{-3t}u(t) ) 的导数不是简单地把 ( e^{-3t} ) 求导成 ( -3e^{-3t} ),还必须在 ( t=0 ) 处处理阶跃跳变。乘法求导法则要求:

[ \frac{d}{dt}[e^{-3t}u(t)]=-3e^{-3t}u(t)+e^{-3t}\delta(t) ]

而 ( e^{-3t}\delta(t) ) 又在 ( t=0 ) 处被采样成 ( \delta(t) )。这一步是很多丢分点。

第三个坑也很隐蔽。在解题时,如果先写:

[ \int f(t)\delta'(t),dt=-f'(0) ]

然后机械地把负号搬到卷积公式里,就会得到 ( -f'(t) ),导致整道题全错。推荐做法是每次用到卷积公式前,在草稿纸上写一遍换元验证,或者直接记住“卷积公式无负号”这个结论。

4.3 学习场景与考场场景的区别

在平时练习时,可以画图、可以慢慢推导、可以用数值计算辅助验证,甚至可以同时用三种方法算同一道题。但在考场上,时间是有限的。建议拿到“结合冲激导数的连续信号卷积”这类题后,按下面的顺序处理:

  1. 先写分配律框架,把奇异信号项与普通信号项分开。
  2. 对奇异信号项直接套公式,不要犹豫。
  3. 对普通信号项用最熟悉的图形法或公式法。
  4. 最后留 3 分钟检查三个位置:( t=0 )、( t=t_0 )、( t\to\pm\infty ) 的表达式是否符合直觉。

这道题在“960题”第 1.3 的位置属于复习早期内容,但它涉及的方法会贯穿整个卷积章节,值得练到十分钟内稳定完成。

5. 用 Python 数值卷积验证解析结果

5.1 为什么要做数值验证

手工推导得到的解析式,符号对不对、延迟对不对、系数对不对,有时心里没底。在平时学习环境里,可以用 Python 对连续信号做离散化,用窄矩形近似冲激,用差分近似冲激导数,然后做数值卷积,再把结果和解析式对比。这样能快速发现符号和区间错误。

实际考场不能带电脑,所以数值验证的作用是“学习期建立信心”,而不是考场工具。为了让数值实验清晰可读,下面不使用带有跳变的 ( e^{-3t}u(t) ),而使用一个无限光滑的高斯信号 ( f(t)=e^{-t^2} )。这样能避开阶跃跳变在数值上产生的高峰,专注验证 ( \delta'(t) ) 卷积与 ( f'(t) ) 的对应关系。

5.2 最小环境准备

需要 Python 3.8 及以上版本,并安装 NumPy 和 Matplotlib:

pip install numpy matplotlib

本示例不依赖 SciPy,卷积用最直观的逐点求和实现,便于理解时间对齐关系。

5.3 完整数值验证代码

import numpy as np import matplotlib.pyplot as plt # 时间轴与采样步长 dt = 0.002 t = np.arange(-4.0, 5.0, dt) # 普通信号:高斯信号,无限光滑,无跳变 f = np.exp(-t ** 2) # 用宽 eps 的矩形脉冲近似 delta(t) def rect(center, width): return (np.abs(t - center) <= 0.5 * width).astype(float) / width eps = 0.01 # delta'(t) 用两个反向矩形近似:约等于 (delta(t+eps)-delta(t-eps))/(2*eps) delta_prime_approx = (rect(eps, eps) - rect(-eps, eps)) / (2.0 * eps) # delta(t-1) 的矩形近似 delta_t1_approx = rect(1.0, eps) # 待验证系统:h(t) = delta'(t) + 2*delta(t-1) h = delta_prime_approx + 2.0 * delta_t1_approx # 解析结果:f(t)*delta'(t) = f'(t),f(t)*2*delta(t-1) = 2*f(t-1) y_analytic = -2.0 * t * np.exp(-t ** 2) + 2.0 * np.exp(-(t - 1.0) ** 2) # 数值卷积:对每个输出时刻 tk,计算 dt * sum(f(tau) * h(tk - tau)) y_num = [] for tk in t: tau = tk - t h_tau = np.interp(tau, t, h, left=0.0, right=0.0) y_num.append(dt * np.sum(f * h_tau)) y_num = np.array(y_num) # 最大误差 max_err = np.max(np.abs(y_num - y_analytic)) print("max error =", max_err) # 绘图对比 plt.figure(figsize=(8, 4)) plt.plot(t, y_analytic, 'r-', linewidth=2, label="analytic") plt.plot(t, y_num, 'b--', linewidth=1, label="numeric") plt.legend() plt.grid(True) plt.xlabel("t") plt.ylabel("y(t)") plt.show()

这段代码的关键点有三个。第一,rect函数把每个冲激近似成面积为 1 的窄矩形;第二,冲激导数用“正矩形减负矩形”再除以 ( 2\varepsilon ) 来近似,这正是导数的中心差分思想;第三,每个输出时刻都按卷积定义做一次求和,时间对应关系非常直观。

5.4 预期结果与误差排查

如果一切正常,代码输出的最大误差大约在 ( 10^{-3} ) 量级,画图上红色解析曲线与蓝色数值曲线几乎重合。误差主要来自两个地方:( \delta'(t) ) 的矩形差分近似是二阶误差,以及时间离散步长 ( dt ) 带来的离散化误差。把 ( \varepsilon ) 和 ( dt ) 同时缩小,误差会进一步下降。

如果数值结果与解析结果偏差很大,按下面顺序检查:

检查点排查方法
rect是否除以宽度不除以width,冲激面积就不是 1
卷积是否乘以 ( dt )漏乘dt会使结果整体放大
( \varepsilon ) 是否太小太小时峰值很大,浮点误差会上升
时间轴是否覆盖 ( h(t) ) 支撑t必须覆盖 ( -\varepsilon ) 到 ( 1+\varepsilon )
解析式符号是否正确把 ( f(t)*\delta'(t)=f'(t) ) 与 ( -f'(t) ) 都试一遍,数值能帮忙定位

这套检查顺序其实和手算时排查错误的顺序一致:先看有没有丢 ( dt )(对应手算漏系数),再看时移有没有对齐(对应手算漏延迟),最后看符号方向。

6. 从一道题到一类题:复习建议与延伸

6.1 出题变化

“结合冲激导数的连续信号卷积”并不只有一种形态。常见的出题变化包括:

第一种,高阶冲激导数。比如:

[ y(t)=f(t)*\delta''(t) ]

结果直接是 ( f''(t) )。如果再叠加延迟,就变成 ( f''(t-2) ) 或 ( f''(t+1) )。这类题的关键是,对 ( \delta ) 的高阶导数不要尝试画图,直接按阶数求导。

第二种,冲激导数与普通信号组合。比如:

[ y(t)=f(t)*\big[\delta'(t-2)+3\delta(t)\big] ]

先做分配律,再逐项套公式,就能得到:

[ y(t)=f'(t-2)+3f(t) ]

第三种,信号本身分段,比如输入是门函数或三角波,系统冲激响应里有冲激偶。这时普通信号部分通常要用图形法先算清楚,再用分配律把奇异信号项叠加进来。做题顺序依然是:先剥离开奇异信号,再组合结果。

6.2 复习路径清单

如果你正在准备期末考试或考研,建议按下面的清单做一遍检查:

  1. 默写第 2 节的奇异信号卷积速查表。
  2. 独立推导第 3 节的三种方法,不要看答案。
  3. 对同一道题,分别用“分配律加公式”和“微积分性质”做两遍,对比结果。
  4. 写出分段表达式后,用端点检查 ( t\to-\infty )、( t=0 )、( t=t_0 ) 三个位置。
  5. 用第 5 节的 Python 代码验证一次你对符号和时移的判断。
  6. 做 3 道同类型题目,限时 10 分钟一道。

6.3 这类题的核心判断

“结合冲激导数的连续信号卷积”这类题的核心判断只有一句:先剥离奇异信号,再用卷积性质把奇异信号转化为普通信号的求导或时移。所有易错点几乎都来自两个地方:一是对 ( \delta' ) 符号的理解,二是对 ( u(t) ) 求导时是否补上冲激项。

建议把本文的公式表整理进自己的复习笔记。以后遇到新题,先按第 4 节五步走,再用第 3 节的分段结果反向检验。练习阶段多用第 5 节的数值卷积验证一次,符号和区间错误会少很多。

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

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

立即咨询