资讯动态

通信原理中的卷积:从物理直觉到工程实战

发布时间:2026/9/17 14:23:53 来源:尧图企业网站定制
我第一次翻开通信原理教材在目录里看到“卷积”两个字的时候还没意识到自己即将迎来什么。等到正文里突然冒出那个积分式子整个人的状态是瞳孔放大、脑子空白、开始怀疑人生。我当时的反应很真实这个公式里的函数为什么要翻转它跟通信到底有什么关系为什么所有教材都默认我会后来在做题、写代码、看论文的过程中我才慢慢想明白卷积不是通信原理里故意设置的门槛而是一种特别自然的思考方式。这篇博文我想把这条入坑路重新走一遍用最直白的语言把通信里的卷积概念讲透。如果你正在学通信原理、信号与系统或者被卷积神经网络里的“卷积”二字搞晕这篇文章应该能帮你把线理顺。我不会只把公式抄一遍给你看而是尽量还原我当时是怎么从“死记硬背”变成“真的懂了”的过程。因为只有在脑子里建立起物理图像卷积那一堆符号才不是天书而是一个特别顺手的工具。1. 为什么通信里到处都是卷积1.1 先用一个回声例子建立直觉先不要看公式我来讲一个场景。假设你站在山谷前喊了一嗓子声音撞到山壁弹回来形成回声。如果山谷有好几个反射面你听到的就不是单一回声而是一串强弱不同、到达时间有先后的回声。也就是说你耳朵收到的信号是原始喊声经过了多条路径、不同衰减、不同时延之后在耳朵里叠加起来的整体效果。通信系统里很多问题跟这个场景几乎一模一样。发射机发出一段信号无线电波在空间里传播会被大楼、地面、山体反射接收机收到的同样是多个“延迟副本”的叠加。这个现象在通信里叫多径传播。如果我们把每条路径看成一次“回声”那接收信号本质上就是发射信号的各个延迟、衰减版本相加。而卷积这个数学工具恰好就是在干这件事把一个输入信号按某种规则拆成很多片段再经过系统“加工”后重新叠加起来。所以第一件事你要记住卷积不是通信原理硬塞进来的抽象符号它描述的就是“过去发生的事如何影响现在”。山谷回声、房间混响、老式电视机的重影全都是卷积的物理表现。1.2 卷积是线性时不变系统的总账本在通信系统里我们常跟“线性时不变系统”打交道简称 LTI。这个名字听起来很吓人拆开其实很好懂。线性指的是如果你给系统输入两路信号的叠加那输出就等于两路信号分别通过系统后的输出再叠加。用生活一点的话说两个人同时说话你的耳朵听到的是两个人声音之和不是谁把谁吃了。时不变指的是输入信号延迟多长时间输出信号也跟着延迟同样的时间波形形状不变。今天喊一声“喂”和明天喊一声“喂”在同一个系统里得到的回声结构应该是一样的。满足这两个性质的系统有一个非常漂亮的结论系统的全部行为可以用一个叫“单位冲激响应”的函数完整描述。单位冲激你可以理解成一个极短、极猛的一下子冲击比如指尖弹一下桌面。系统对这一次冲击的响应就是 h(t)。如果输入信号是连续不断的、由无数个小冲击拼起来的东西那输出就是每一个小冲击分别产生响应之后的总和。这个“总和”在数学上就是卷积。很多初学者忽略了这个背景看到卷积公式就硬背。其实只要明白“线性系统可以拆解成对每一个输入片段的响应再叠加”卷积公式的逻辑就顺了。通信里的滤波器、放大器、信道绝大多数都能近似成 LTI 系统所以说卷积是通信原理的地基真不是夸张。1.3 卷积到底在算什么我用一句话概括卷积式子的含义把输入信号拆成无数个碎片让每个碎片经过系统的“冲激响应模板”然后在同一个观察时刻把所有碎片造成的贡献叠加起来。具体到图形上卷积的计算有四个动作翻转、平移、相乘、求和。翻的是谁通常是系统冲激响应 h(τ)。平移是在时间轴上滑动让 h 和输入 x 对齐。对齐之后把两个函数重叠的部分逐点相乘再对整个重叠区域求和。这个和就是某一时刻的输出。依次移动 h你就能得到不同时刻的输出。这个思路看起来机械但它给了一个很重要的启示卷积结果里每一个点都不是只跟输入信号的某一个点有关而是跟输入信号的一整段有关。通信里经常说的码间干扰本质上就是前面几个符号的“尾巴”叠加到了当前这个符号上。你用卷积的眼光一看这个问题就不神秘了。2. 卷积的数学定义连续和离散要放在一起看2.1 连续卷积的定义与物理含义通信原理教材里最常给的定义是连续卷积y(t) ∫ x(τ) h(t - τ) dτ其中 x(t) 是输入信号h(t) 是系统冲激响应y(t) 是输出信号积分变量是 τt 通常被看成当前观察时刻。很多人在这一步就卡住了为什么是 h(t - τ)而不是 h(τ - t)为什么积分里会出现一个负号道理很简单。我们把 h 本身定义成“从冲击发生那一刻起后续会产生什么响应”所以当输入在时刻 τ 发生了一个片段 x(τ)dτ 时这个片段在 t 时刻造成的响应大小是 h(t - τ)。t 是当前时刻τ 是这个片段发生的时刻时间差 t - τ 就是响应已经演化了多久。如果 h 里的参数是 τ - t那就变成未来的时间差没有物理意义。所以 h(t - τ) 不是随便写的它表达的正是“因果性”。连续卷积的积分上下限理论上是从负无穷到正无穷但实际使用中因为因果系统的 h(t) 在 t 0 时等于 0输入信号也有有限区间所以积分区间往往会被压缩。做题时千万不要一上来就生硬套公式先判断两个函数分别在哪个区间内有值积分界限就会变得很清楚。2.2 离散卷积通信里真正在用的形式现代通信系统基本是数字化的。你手机里的调制解调器处理的都是离散序列所以离散卷积的重要性一点不比连续卷积低。它的定义是y[n] Σ x[k] h[n - k]这里 x[k] 是输入序列h[k] 是离散冲激响应求和变量是 k。你可以把它理解成“一个离散系统对输入序列的加权叠加”。比如一个简化的信道有主径加一条延迟一拍的反射径那么 h[0] 和 h[1] 都有值接收到的 y[n] 就是 x[n] 和 x[n-1] 的加权组合。这个式子写开你会看到卷积天然就描述了“当前输入和过去输入的混合”。离散卷积在数字通信里几乎无处不在数字滤波器、信道均衡、匹配滤波的数字实现全都在算离散卷积或者是它的快速版本。所以我们后面做实操时也重点用离散序列来计算因为它既能帮助建立直觉又可以直接写程序验证。2.3 卷积的图形化四步翻转、平移、相乘、求和如果让我给新手推荐一种最快理解卷积的方法那就是不管连续还是离散都亲手画一遍四步图。离散序列尤其好画。假设 x[k] 有三个点h[k] 也有三个点。第一步把 h[k] 沿着纵轴翻转得到 h[-k]。翻转是离散卷积里最容易出错的地方很多人算着算着就把它当成相关运算了所以一定要在草稿上标清楚。第二步把翻转后的序列平移到某个位置 n得到 h[n-k]。第三步把 x[k] 和 h[n-k] 在同一时刻 k 的值相乘。第四步把所有乘积加起来就得到 y[n]。很多人问为什么一定要翻转这个问题本身就是对卷积理解不到位。翻转是为了让 h 的“记忆方向”跟输入的时间方向一致。h[n-k] 里的负号本质上是把过去输入的记忆方向反转过来使得 k 越小离当前时刻 n 越远对应的时间差越大。如果不翻转那就不是“系统冲激响应”而是“相关运算”了。这个差别我们后面还会专门讲。2.4 两个有限长序列卷积的结果长度处理有限长序列的时候有一个特别实用的小结论必须记住一个长度为 N 的序列和一个长度为 M 的序列做线性卷积结果长度为 N M - 1。这个结论其实很好理解。你把输入序列看成从第 0 个点开始系统冲激响应从第 0 个点开始两个序列完全重叠的时刻最开始只有最边缘的两个点接触然后逐渐进入完全重叠区域最后又逐渐分离。接触点数量的变化过程正好是从 1 增加到 min(N,M)再减小回 1总的输出点数是 N M - 1。这个结论在写程序、画图、配时序的时候特别有用。比如你在 MATLAB 或 Python 里用conv函数算卷积出来的结果长度如果跟你预期不一样先检查一下是不是忘了这个 N M - 1。后面实操部分我会用一个具体例子演示。3. 通信里最典型的4个卷积场景3.1 发端脉冲成型符号序列是怎么变成波形的你可能觉得卷积只出现在理论推导里离实际系统很远。其实从发射机第一级就开始用了。通信系统发数据时把比特映射成符号例如 QPSK 符号是复数符号序列本身是一串离散的点。要把这串离散符号变成能在信道里传播的连续波形就需要“脉冲成型”。这个过程用公式写出来就是符号序列先变成一个冲激串即每个符号位置放一个冲激再与成型滤波器的脉冲响应 g(t) 做卷积。你可以想象成每一个符号都“撞”了一下成型滤波器滤波器吐出一个有特定波形的脉冲所有脉冲在时间上叠加就成了发射信号。为什么非要做卷积因为如果不加成型滤波直接把符号序列变成方波发送信号的频谱会非常宽浪费频带还会对邻道产生干扰。我们用升余弦滚降滤波器等成型脉冲去卷积本质上是把每个符号的频谱限制在需要的带宽范围内。看到这里你会发现“卷积”不是只在纸面上绕圈而是实实在在决定着你手机信号占多宽频谱。3.2 信道多径发射信号是如何被“卷积”坏的前面回声例子已经铺垫过了。无线信道的多径效应是最经典的卷积应用场景。假设发射信号是 s(t)接收信号是 r(t)信道有 L 条路径第 i 条路径的衰减是 a_i、时延是 τ_i那么接收信号可以写成r(t) Σ a_i s(t - τ_i) n(t)其中 n(t) 是噪声。如果我们把信道冲激响应定义成h(t) Σ a_i δ(t - τ_i)那接收信号就可以简洁地写成 r(t) s(t) * h(t)。这就是一个标准的卷积。很多人把卷积看成纯数学游戏看到这个例子就会明白卷积是描述“信号在信道里被多次反射叠加”的最佳语言。更深一步如果你在频域看这个信道就会有频率选择性衰落。当多径时延差和信号带宽可比时某些频率分量因为多径之间的相消干涉会严重衰落某些频率分量则增强。这个效应利用卷积定理特别容易解释下一节展开。实际系统里做信道估计本质也就是要把这个卷积关系里的 h(t) 估计出来然后想办法在接收端“反卷积”掉。3.3 接收端匹配滤波卷积其实就是相关器接收机里另一个绕不开的卷积应用是匹配滤波。我们在接收端要判断发的是 0 还是 1就要对收到的信号进行最佳处理使得噪声影响最小、判决最可靠。匹配滤波器给出的结论是滤波器的冲激响应应该是发射波形的时间反转并对齐到判决时刻。假设发射脉冲是 g(t)持续时间为 T匹配滤波器的冲激响应取 h(t) g(T - t)。那接收信号 y(t) 经过匹配滤波后在判决时刻 T 的输出其实就是接收信号与本地参考波形 g(t) 的互相关结果。为什么相关会变成卷积因为匹配滤波器 h(t) 是反转后的 g(t)卷积定义里又包含了一次翻转。翻转接翻转就等于没有翻转于是卷积变成了相关。这个例子最好地说明了“卷积和相关的区别”不是咬文嚼字而是工程上真的会带来不同的处理结果。你在通信原理课本里看到匹配滤波那一章时如果能把“卷积实现相关”这个点想通透后面什么最佳接收、相关接收机都会变得非常简单。3.4 数字接收机里的 FIR 滤波器每天都在算卷积到了数字接收机内部卷积仍然无处不在。数字下变频之后基带信号要经过很多滤波器比如信道选择滤波器、匹配滤波器的数字实现、均衡器。这些滤波器大多是 FIR 结构也就是有限冲激响应滤波器。FIR 滤波器的输出公式写出来y[n] b_0 x[n] b_1 x[n-1] ... b_M x[n-M]这就是一长串加权延迟叠加恰好就是离散卷积。所以你在 DSP 课上学过 FIR其实已经在学卷积你在通信原理里学卷积其实也是在为后面所有数字信号处理打底。我见过很多同学在《通信原理》前半学期背卷积定义背得咬牙切齿结果到后面学 OFDM、学均衡器时反而忘了卷积其实非常可惜。通信系统的收发链路就是一个超长流水线发端脉冲成型在卷积信道在卷积收端匹配滤波和均衡也在卷积。你把这一条线串起来对整门课的理解会有一个质的提升。4. 卷积定理从频域看卷积为什么更香4.1 时域卷积等于频域相乘卷积计算有时候很繁琐尤其做理论分析时连续卷积积分一堆离散卷积求和一长串。好在我们有一个超级好用的工具傅里叶变换。卷积定理说时域里的卷积对应频域里的乘积如果 y(t) x(t) * h(t)则 Y(f) X(f) · H(f)反过来时域里的乘积对应频域里的卷积。这条定理想表达的意思是让信号通过一个 LTI 系统等价于在频域里把信号的频谱 X(f) 逐点乘以系统的频率响应 H(f)。这个性质太好了因为很多问题在频域里看就是“乘一下”的事。我刚开始学的时候觉得这个定理只是“方便计算”。后来才发现它更是理解系统行为的抓手。H(f) 的幅频响应告诉你哪些频率被保留、哪些被衰减相频响应告诉你哪些分量被延迟。通信里的带宽、滤波、信道衰落本质上都可以从“乘积”这个角度去看。4.2 用卷积定理理解带宽限制与码间干扰举一个非常实际的例子。发端脉冲成型滤波器的频率响应是升余弦形状它在频域近似为通带内增益基本平坦带外迅速滚降。用卷积定理看发射信号的频谱就等于原始符号序列的频谱乘以成型滤波器频响。所以最终发射信号带宽主要由成型滤波器决定而不是由原始符号序列决定的。再来看多径信道。信道冲激响应 h(t) 是几个冲激的叠加那么 H(f) 就是几个复指数的叠加。由于路径时延不同H(f) 的幅度随频率起伏变化。信号带宽越宽频谱上就越可能同时碰到 H(f) 的深衰落点和增强点导致不同频率分量衰减不一致这就是频率选择性衰落。如果信号带宽很窄整个频谱范围内 H(f) 近似恒定衰落就变成平坦的。用卷积定理来看这个过程特别清楚。码间干扰也可以用频域解释。要使符号之间互不干扰频域上必须满足奈奎斯特条件总体传输函数在平移整数倍符号速率后相加等于常数。如果整体频响不满足时域上符号脉冲的尾巴就会在采样点处叠加到别的符号上。这是卷积定理在通信系统设计中最经典的应用。4.3 神经网络里的卷积和通信里的卷积有什么不一样现在很多人学深度学习时也会碰到“卷积”于是跑来问通信原理里的卷积是不是就是 CNN 里的卷积它们很像但有本质区别。数学形式上CNN 里的卷积核操作往往没有翻转本质上是不翻转的互相关不过因为神经网络可以自己学卷积核参数翻转不翻转对结果影响不大所以很多框架直接实现了互相关。通信和信号处理里的卷积是严格的数学定义翻转这一步不能少。它描述的是一个物理过程过去的输入如何影响现在的输出。CNN 里的卷积更像一种特征提取模板卷积核在不同的空间位置上做加权求和目的是抓局部模式比如边缘、纹理。虽然它们的底层数学都是加权滑动求和但在用途和约束上完全不同。学习时最好先分清楚否则看代码时容易把自己绕晕。5. 实操手把手计算一个离散卷积案例5.1 设定最简单的输入序列与系统响应理论说再多不如动笔算一个例子。我用两个简单序列来演示离散卷积全过程。设输入序列 x[n] [1, 2, 3]系统冲激响应 h[n] [1, 1, 1]下标都从 n0 开始。为什么选这么简单的序列因为手算能完全摊开来看你才能真正看到翻转、平移、相乘、求和里的每一个动作。这个例子里 N3M3根据前面的结论卷积结果长度是 33-1 5所以 y[n] 应该有 5 个点。5.2 分步计算并用表格核对我们按定义 y[n] Σ x[k] h[n-k] 来算。先算 n0。此时需要 h[0-k]也就是 h[0] 1。所有 k 中只有 k0 有重叠x[0]1乘积为 1×11。所以 y[0]1。再算 n1。此时 h[1-k]当 k0 时 h[1]1贡献 x[0]·h[1]1当 k1 时 h[0]1贡献 x[1]·h[0]2。总共有 123。所以 y[1]3。n2 时h[2-k]k0 时 h[2]1贡献 1k1 时 h[1]1贡献 2k2 时 h[0]1贡献 3。加起来 y[2]6。n3 时h[3-k]对应 k1 时 h[2]1贡献 2k2 时 h[1]1贡献 3。加起来 y[3]5。n4 时h[4-k]只有 k2 对应 h[2]1贡献 3。所以 y[4]3。最终 y [1, 3, 6, 5, 3]。这正好是输入序列 [1,2,3] 滑动着通过 [1,1,1] 的结果。你也可以理解成系统的冲激响应是“保持三个点平均”所以输出也呈现出先上升、再下降的趋势。5.3 用矩阵视角和 Python 快速验证除了手算我建议你再用一个视角看卷积矩阵乘法。因为卷积是线性运算所以它一定能写成矩阵乘以向量的形式。用 x [1,2,3]^TH 是 5×3 的矩阵[ 1 0 0 ] [ 1 1 0 ] [ 0 1 1 ] [ 0 0 1 ] [ 0 0 0 ]这个矩阵每一行里的非零值就是 h 序列的滑动位置。用 H 乘 x得到的结果正好是 [1, 3, 6, 5, 3]。这种矩阵形式在通信里的均衡器设计、稀疏信道估计中非常常见看到它你不不必慌它只是把卷积换了一种记录方式。如果想用代码验证Python 里一行就够import numpy as np x np.array([1, 2, 3]) h np.array([1, 1, 1]) y np.convolve(x, h, modefull) print(y) # [1 3 6 5 3]跑完代码再回头看你手算的过程会发现如果哪里算错几乎都是翻转那一步出了问题。建议你以后不管遇到多复杂的卷积都先用这种小例子跑一遍程序再回来看公式。5.4 实际运算中最容易踩的坑第一个坑是下标不同步。做卷积求和时经常写着写着就把 h[n-k] 写成了 h[k]漏掉负号。这个负号不是小事漏掉了就不再是卷积而是相关运算。相关运算和卷积在滤波器设计里给出的结果经常不一样。第二个坑是边界处理。有限长序列卷积时最前面和最后面的部分两个序列只是部分重叠容易漏算。比如上例中 y[0] 其实只用了 h[0] 和 x[0]很多新手会拿全部 h 去乘全部 x算出一个错误的 6 来。一定要记住卷积的“完全重叠区”只有中间一段头尾都是部分重叠。第三个坑是忘记检查结果长度。如果你手算结果点数不对那后面所有分析都会错。时刻用 NM-1 这个公式验证一下能帮你省下大量时间。我在辅导别人时发现绝大多数低级错误都能靠“检查输出长度 检查第一个点”这两条规则找出来。6. 常见问题与避坑指南6.1 卷积和相关到底有什么区别这个问题我很想单独拿出来说。卷积是 y[n] Σ x[k] h[n-k]互相关是 c[n] Σ x[k] h[k-n]。两者就差一个负号的方向也就是 h 有没有翻转。可以这样记卷积里有翻转相关里没有翻转。卷积对应“线性时不变系统的输出”相关对应“两个信号有多像、在哪个延迟下最像”。通信中的相关接收器就是利用相关来检测已知波形的而匹配滤波器则是用卷积实现了相关。角度稍微不同但在系统设计里不能搞混。如果你学过卷积神经网络其实很多深度学习框架里的 conv 层默认实现是不翻转的“相关”只是大家叫顺口了都叫“卷积”。所以在听课、看文献时看到“卷积”两个字要多留一个心眼要看它到底指的是哪一种操作。6.2 线性卷积、循环卷积与边界效应的关系通信里做 OFDM 时会遇到循环卷积。循环卷积可以理解成两个序列都按长度循环延拓再进行卷积。它与线性卷积的差别主要体现在边界上。线性卷积的长度是 NM-1循环卷积的结果固定为参与计算的长度 L。为了实现“线性卷积等于循环卷积”OFDM 系统会加循环前缀。原理解释起来也不难信道作用相当于线性卷积接收端做 DFT 需要的是循环卷积所以发端把符号末尾的一段复制到开头让线性卷积在 FFT 窗口内看起来像循环卷积。这个点很多人学到 OFDM 时才第一次正面接触循环卷积但如果能提前把线性卷积和循环卷积的区别搞清楚后面就会轻松很多。我在实际面试和带新人的时候经常问一个问题两个长度为 4 的序列做线性卷积结果多长如果答不上来基本能判断前面卷积基础没打牢。这个知识看起来小但在开窗、补零、频谱分析里天天用。6.3 学习顺序先时域还是先频域有些同学问我学通信原理里的卷积应该先啃时域定义还是先看频域卷积定理我的建议是两头都要抓但顺序不能乱。先把时域卷积的四步手算弄明白至少能独立算一个 3×3 的离散卷积。有了这个底子再引入卷积定理。因为如果不懂时域卷积在干什么频域一乘获得的“方便”是虚的你无法理解自己到底省略了什么过程。反过来如果只知道时域手算不知道卷积定理那后面分析带宽、滤波器、多径信道时每步都会很慢。比较好的学习路线是先离散小例子建立直觉再写连续卷积公式然后看卷积定理最后回到通信系统的收发链路里反复应用。我自己当年就是先被樊昌信教材里的公式劝退后来自己找了一堆小例子算才彻底翻身。教材只是地图走路还得靠自己一步步踩。6.4 一个实用小技巧所有卷积运算都先画时间轴最后分享一个对我帮助很大的习惯任何卷积问题第一件事不是代公式而是在草稿纸上画一条时间轴把 x 和 h 的位置、区间都标出来。连续卷积画函数区间离散卷积画序列下标。这样你自然知道翻转之后该往哪个方向移、边界在哪里、需要把积分或求和的范围定在哪。画时间轴还能帮你快速判断系统是不是因果的、输入是不是有限长的、边界效应会不会重要。很多看起来复杂的卷积题画完时间轴就会发现本质上就是几个分段函数在滑动对齐剩下的工作只是分段积分或求和。这个习惯我保持了十几年无论做工程还是看论文都没有失效过。通信里的卷积之所以让人头疼很大程度上是因为教材默认你已经有很强的信号与系统基础但实际很多人是半路出家。我在这个领域待得越久越觉得卷积不是背出来的而是用出来的。你多算几个例子、多画几条时间轴、多观察几个实际通信模块就会发现它的逻辑其实非常朴实。希望这篇入坑笔记能让你少走一点我当年走弯路的距离。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价