信号与系统这门课,网上讨论度最高的两个考点,一个是卷积,另一个就是单位冲激函数。很多新手看到教材里写“δ(t) 在零点等于无穷大”就直接懵掉,觉得这是一个数学家拿来吓人的概念。实际上,在“做题”这个层面,单位冲激函数远比它看上去简单:它有一组非常固定的性质,题目类型也高度重复。只要你把筛选性质、尺度变换、卷积关系和阶跃函数的导数这几条规则背熟,考场上遇到带 δ(t) 的积分和卷积,基本就是送分。
这篇文章会按零基础路线展开。先讲清楚 δ(t) 到底是什么,再逐个拆解必须记住的性质,然后给出一套可以直接套用的解题套路,最后用 Python 数值实验把性质验证一遍。文章里没有复杂的数学证明,只有能直接上手用的结论。读完以后,你可以拿任何一本信号与系统教材的课后题来检验,凡是涉及单位冲激函数的题,都应该能快速写出思路。
如果你是期末复习、考研复习,或者刚开始学信号与系统的本科生,这篇博客可以直接存下来当复习提纲;如果你已经在做信号处理、通信或嵌入式相关的工作,也可以通过文末的 Python 代码,重新熟悉这套概念在数值计算里是怎么表现的。
1. 单位冲激函数核心速览
在拆细节之前,先用一张表把单位冲激函数的关键信息梳理清楚。后面所有内容,都可以对照这张表来理解。
| 考察维度 | 核心内容 |
|---|---|
| 数学定义 | δ(t) = 0,t ≠ 0;全区间积分为 1 |
| 直观理解 | 面积恒为 1、宽度趋向于 0 的极限脉冲 |
| 常用符号 | δ(t),δ(t - t₀) 表示延迟到 t₀ 处的冲激 |
| 考试价值 | 信号与系统、数字信号处理高频考点,常出现在积分、卷积、傅里叶变换中 |
| 必须掌握的性质 | 筛选性质、尺度变换性质、卷积性质、与阶跃函数的关系 |
| 典型题型 | 含 δ 的定积分、卷积化简、分段函数求导、系统冲激响应 |
| 工程用途 | LTI 系统冲激响应、信号采样、频谱建模、电路瞬态分析 |
| 验证环境 | 本文 Python 验证仅需要 numpy + matplotlib + scipy,普通 CPU 环境即可运行 |
从表格可以看到,真正要记的性质其实只有四类。考试里翻来覆去,无非是筛选性质求积分、尺度变换化简、卷积平移、阶跃函数求导出现冲激。把这些规则拆开以后,每一类题都有固定解法。
下面逐一展开。
2. 单位冲激函数到底怎么理解
先看定义。工程教材通常直接给两条规则:
$$ \delta(t) = 0, \quad t \neq 0 $$
$$ \int_{-\infty}^{+\infty} \delta(t) , dt = 1 $$
这两句话合在一起,说的是:除了 t = 0 这一点以外,函数值都是 0;但在整条数轴上积分,总面积是 1。一个只在某一点“有值”、又能在整个积分里贡献出面积为 1 的“函数”,显然不可能用普通函数的图像来理解。严格来说,δ(t) 是广义函数,也叫分布,工程课程里不需要你去证明它的合法性,只需要会用它的规则。
更直观的理解方式,是看一个极限过程。假设有一个矩形脉冲:
$$ p_{\tau}(t) = \begin{cases} \dfrac{1}{\tau}, & |t| \le \dfrac{\tau}{2} \ 0, & |t| > \dfrac{\tau}{2} \end{cases} $$
这个矩形脉冲的高度是 1/τ,宽度是 τ,面积恒为 1。当 τ 越来越小,脉冲越来越窄,高度越来越高,但面积始终不变。当 τ 趋向于 0,这个极限状态就是单位冲激函数。所以在做计算的时候,你可以把 δ(t) 想象成“一个极短时间内发生、作用总量为 1 的冲击”。
这种理解方式在工程上非常有用。比如电路里的雷击、机械系统的瞬间冲击、通信系统里的极窄脉冲,都可以抽象成单位冲激。它描述的不是“某个值有多大”,而是“一瞬间给了系统多少能量”。
还要特别注意一点:连续时间单位冲激 δ(t) 和离散时间单位脉冲 δ[n] 不是一回事。离散时间 δ[n] 的定义是:n = 0 时取 1,n ≠ 0 时取 0。它是一个普通序列,不涉及无穷大。很多初学者把这两个概念混在一起,做题时就会出现“连续系统用离散结论”的错误。
3. 三个必须记住的核心性质
单位冲激函数之所以好用,是因为它有三条核心性质。这三条性质是考试解题的直接工具,必须熟练到“看到题目条件就能反射出公式”的程度。
3.1 筛选性质(抽样性质)
筛选性质是单位冲激函数最重要的性质,公式如下:
$$ \int_{-\infty}^{+\infty} f(t) , \delta(t - t_0) , dt = f(t_0) $$
理解起来很简单:δ(t - t₀) 只在 t = t₀ 处“起作用”,所以它会把被积函数 f(t) 在 t₀ 处的值挑选出来。这个过程也叫“抽样”或“采样”,是信号采样理论的雏形。
使用时要满足两个前提:
- f(t) 在 t₀ 处连续,这个条件在大部分题目里都成立;
- 积分区间必须包含 t₀。如果 t₀ 不在积分区间内,整个积分结果就是 0。
举个例子:
$$ \int_{-2}^{5} t^2 , \delta(t - 3) , dt $$
冲激位置在 t = 3,区间 [-2, 5] 包含 3,所以直接代入 f(t) = t²,得到 f(3) = 9。
如果题目给的积分区间是 (3, 5),那这个积分结果就是 0。做题第一步不是急着背公式,而是先确认冲激位置是否真的落在积分区间内。
另外,很多教材会约定:如果积分端点刚好等于冲激位置,比如 ∫₀^∞δ(t)dt,这时结果可能取 0.5,也可能取 1,不同教材约定不同。考试时要注意教材怎么处理端点,不要默认所有情况都像广义函数课本里那样给 1/2。
利用筛选性质,还可以证明一个常用结论:任意函数 f(t) 与单位冲激相乘,等价于把函数值“提取”到冲激位置:
$$ f(t) \cdot \delta(t - t_0) = f(t_0) \cdot \delta(t - t_0) $$
这个“相乘提取”的规则在信号化简中很常用。比如 t·δ(t) = 0,因为 f(0) = 0;(t - 2)·δ(t - 2) = 0,因为 f(2) = 0。
3.2 尺度变换性质
当冲激函数的自变量带系数时,不能直接忽略系数。基本公式是:
$$ \delta(at) = \frac{1}{|a|} , \delta(t) $$
更一般地:
$$ \delta(at - b) = \frac{1}{|a|} , \delta\left(t - \frac{b}{a}\right) $$
这个公式的推导思路很简单:做变量代换 τ = at,则 dt = dτ/|a|。在积分意义下,δ(at) 等价于 δ(t)/|a|。注意绝对值号来自变量代换时积分方向的变化,a 为负数也要取绝对值。
典型例子:
$$ \delta(2t) = \frac{1}{2} , \delta(t) $$
$$ \delta(2t - 4) = \frac{1}{2} , \delta(t - 2) $$
第二个例子先求冲激的零点:2t - 4 = 0,得到 t = 2,所以冲激位置在 t = 2,前面的系数是 1/2。
这是初学者错误率最高的地方。很多人看到 δ(2t),下意识觉得“不就是 δ(t) 吗”,然后丢掉 1/2。考试时只要出现系数,必须条件反射地补上 1/|a|。
3.3 卷积性质
卷积是信号与系统课程的另一个核心,而单位冲激函数和卷积结合以后,会得到一个非常简洁的结论:
$$ f(t) * \delta(t) = f(t) $$
$$ f(t) * \delta(t - t_0) = f(t - t_0) $$
第一条说明:任意信号与单位冲激卷积,结果等于原信号。单位冲激是卷积运算的“单位元”,类似乘法里的 1。
第二条说明:任意信号与一个延迟的冲激卷积,相当于把信号整体平移到冲激位置。这是时移性质。
举例:
$$ e^{-t}\epsilon(t) * \delta(t - 3) = e^{-(t-3)}\epsilon(t - 3) $$
这个结论在很多系统分析题里能直接节省大量计算时间。只要卷积里出现 δ(t - t₀),就直接把另一个函数往右平移 t₀,不需要真的去算卷积积分。
4. 与单位阶跃函数的关系:求导与积分
单位阶跃函数 ε(t) 的定义很直观:
$$ \epsilon(t) = \begin{cases} 1, & t > 0 \ 0, & t < 0 \end{cases} $$
在工程教材里,ε(t) 在 t = 0 处的取值通常不影响积分和求导运算,一般不去纠结。
单位冲激函数与单位阶跃函数之间存在互逆关系:
$$ \epsilon(t) = \int_{-\infty}^{t} \delta(\tau) , d\tau $$
$$ \delta(t) = \frac{d\epsilon(t)}{dt} $$
第一个公式表示:从负无穷积到 t,如果 t < 0,积分结果是 0;如果 t > 0,冲激已经完整地被“扫过”,积分结果是 1。所以积分结果就是一个阶跃函数。
第二个公式表示:阶跃函数在 t = 0 处发生剧烈跳变,跳变幅度为 1,求导后就在 t = 0 处产生一个单位冲激。换句话说,冲激函数可以用来表示函数在跳变点处的导数。
这套关系在考试里最常见的考法,是给一个分段信号,让你求导。遇到信号的跳变点,处理方式不是忽略,而是补上一个“跳变幅度 × 单位冲激”。
比如:
$$ f(t) = 2\epsilon(t - 1) $$
这个信号在 t = 1 处从 0 跳到 2,跳变幅度是 2,所以:
$$ f'(t) = 2\delta(t - 1) $$
再比如:
$$ f(t) = (t - 1)\epsilon(t - 1) $$
求导用乘积法则:
$$ f'(t) = \epsilon(t - 1) + (t - 1)\delta(t - 1) $$
利用“相乘提取”规则,(t - 1)·δ(t - 1) = 0,所以:
$$
f'(t) = \epsilon(t - 1)
$$
这里没有出现额外冲激,原因是 f(t) 在 t = 1 处虽然从 0 开始增长,但函数值本身没有发生“跳变”,是连续的。
5. 冲激偶函数:进阶考点
如果课程大纲里出现了“冲激偶”,指的就是单位冲激函数的导数,记作 δ'(t)。
冲激偶的定义式子不多,考试里最常考的是它的筛选性质:
$$ \int_{-\infty}^{+\infty} f(t) , \delta'(t - t_0) , dt = -f'(t_0) $$
注意符号是负号。这个结果可以通过分部积分得到,工程课程里直接背结论就行。
举例:
$$ \int_{-\infty}^{+\infty} t^2 , \delta'(t) , dt $$
利用公式,f(t) = t²,f'(0) = 0,所以积分结果是 0。
再看一个:
$$ \int_{-\infty}^{+\infty} \sin t , \delta'(t - 1) , dt $$
f(t) = sin t,f'(1) = cos 1,所以结果是 -cos 1。
如果你们学校的信号与系统大纲没有讲冲激偶,这一类题可以直接跳过。如果讲了,重点就是把负号记清楚。这里丢分的人非常多。
6. 典型例题与解题套路
这一节给出五道典型例题,每一道都对应一种最常见的考法。建议先自己算,再对答案,最后总结成自己的解题流程。
6.1 直接使用筛选性质
计算:
$$ \int_{-\infty}^{+\infty} \cos(2\pi t) , \delta(t - 3) , dt $$
冲激位置在 t = 3,区间是整个实数轴,直接代入:
$$ \cos(2\pi \times 3) = \cos(6\pi) = 1 $$
所以答案等于 1。这是一道很典型的“送分题”。
6.2 积分区间不包含冲激位置
计算:
$$ \int_{-\infty}^{0} e^{-t} , \delta(t - 1) , dt $$
冲激位置在 t = 1,而积分区间是 (-∞, 0],不包含 t = 1,所以积分结果为 0。
很多同学拿到题就开始算 e⁻¹,这就是没有先检查冲激位置是否在区间内。做题顺序应该是:先找冲激位置,再检查区间覆盖,最后才代值。
6.3 尺度变换化简
化简:
$$ \delta(3t - 6) $$
先把冲激的零点求出来:
$$ 3t - 6 = 0 \quad \Rightarrow \quad t = 2 $$
再除以系数绝对值:
$$
\delta(3t - 6) = \frac{1}{3} , \delta(t - 2) $$
这类题考查的是尺度变换性质,最容易错在没有 1/3,或者零点找错。
6.4 卷积平移
计算:
$$ e^{-2t}\epsilon(t) * \delta(t - 4) $$
根据卷积与冲激的关系,结果等于把原函数平移到 t = 4:
$$
e^{-2(t-4)}\epsilon(t - 4) $$
注意:指数里的 t 也要跟着平移,阶跃函数的自变量也要变成 t - 4。如果只平移指数、不平移阶跃函数,结果就是错的。
6.5 分段函数求导
已知:
$$
f(t) = 3\epsilon(t - 2) + (t - 1)\epsilon(t - 1)
$$
求 f'(t)。
分开处理。第一项 3ε(t - 2) 在 t = 2 处跳变 3,求导得 3δ(t - 2)。第二项 (t - 1)ε(t - 1) 在 t = 1 处函数连续,求导得 ε(t - 1)。因此:
$$
f'(t) = 3\delta(t - 2) + \epsilon(t - 1)
$$
这道题把所有核心考点合在了一起:跳变补冲激、乘积法则、相乘提取规则。如果这道题能独立做对,说明单位冲激函数的基本功已经到位了。
7. 用 Python 验证单位冲激函数的性质
数学公式看再多,不如跑一段代码有感觉。下面用 Python 做四个小实验:近似冲激、筛选性质、卷积平移、阶跃与冲激的关系。环境只需要 Python 3.8+,依赖库用 numpy、matplotlib、scipy。
7.1 用窄高斯函数近似单位冲激
单位冲激函数无法直接画图,但可以用一个面积恒为 1 的窄高斯函数来近似:
$$ \delta_\varepsilon(t) = \frac{1}{\sqrt{2\pi}\varepsilon} e^{-t^2 / (2\varepsilon^2)} $$
当 ε 越小时,高斯函数越窄、越高,越来越接近单位冲激。
import numpy as np import matplotlib.pyplot as plt def gauss_delta(x, t0=0.0, eps=0.02): """用窄高斯函数近似单位冲激函数 delta(t - t0)。""" return 1.0 / (np.sqrt(2 * np.pi) * eps) * np.exp(-0.5 * ((x - t0) / eps) ** 2) t = np.linspace(-0.3, 0.3, 10000) y = gauss_delta(t, t0=0.0, eps=0.02) plt.figure(figsize=(8, 4)) plt.plot(t, y, label=r"$\delta_{\varepsilon}(t)$") plt.xlabel("t") plt.ylabel("amplitude") plt.title("单位冲激函数的窄高斯近似") plt.grid(True) plt.legend() plt.show()运行这段代码