1 循环卷积的基本定义
1.1 记号与问题设定(长度 \(N\)、索引范围)
设离散序列 \(x[n]\) 与 \(h[n]\) 的长度均为 \(N\),其有效索引可取 \[ n=0,1,\dots,N-1. \] 循环卷积把二者都视为在索引上周期延拓为长度 \(N\) 的周期序列;因此,卷积输出也定义为长度为 \(N\) 的序列 \(y[n]\),同样取 \(n=0,1,\dots,N-1\)。
1.2 循环边界条件与模运算
“循环”一词对应的边界条件是:当卷积求和涉及的索引超出 \(0\) 到 \(N-1\) 的范围时,不是截断或补零,而是按周期性绕回。绕回在数学上通过模运算刻画:对任意整数索引 \(k\),将其映射到 \[ k \bmod N \in \{0,1,\dots,N-1\}. \] 因此,原本需要访问 \(h[k]\) 的地方,会改为访问 \(h[(k \bmod N)]\)。
1.3 循环卷积的公式与直观解释
循环卷积(记作 \(x \circledast h\) 或 \(x \ast_{\text{c}} h\))定义为 \[ y[n]=(x \circledast h)[n]=\sum_{m=0}^{N-1} x[m]\;h[(n-m)\bmod N],\quad n=0,1,\dots,N-1. \] 直观理解:把 \(h[\cdot]\) 在“环”上移动并与 \(x[\cdot]\) 做逐点乘加;当 \(h\) 的某个位置移出右端,会从左端对应位置继续参与计算。于是输出始终为长度 \(N\),且每个输出点都由 \(N\) 项乘积构成。
2 与线性离散卷积的关系
2.1 线性卷积回顾
线性离散卷积通常以长度分别为 \(N\) 与 \(M\) 的序列为基础,并通过求和得到长度 \(N+M-1\) 的结果(在零外延设定下)。对长度均为 \(N\) 的情形,线性卷积输出覆盖更长的索引范围,超出原长度的部分由“补零”影响而不再回到开头。
2.2 “绕回”的差异来源
两者差异的本质在于对越界索引的处理方式:
- 线性卷积:越界通常视为零(或等价于零外延),因此不会参与后续索引的计算。
- 循环卷积:越界按周期绕回到 \([0,N-1]\) 区间内,相当于把“尾部影响”折叠回“头部”。
这会导致同一对输入在不同边界条件下得到不同结果,尤其当卷积核与信号在各自长度内的卷积贡献跨越边界时,折叠效应就会显著。
2.3 何时两者结果相同(重叠与长度约束)
当卷积的“有效重叠”没有跨越循环折叠发生的边界时,循环卷积与线性卷积对应片段可一致。常见判据可用长度约束表达:若线性卷积结果在某些索引范围内不涉及“超出长度的贡献折回”,则这些索引处的数值相同。
在实践中,一个常用思路是:若把线性卷积所需的序列适当扩展(例如补零到足够长度)并在该长度上做循环卷积,则就能恢复与原线性卷积一致的结果片段。这也是后续 FFT 快速卷积常见做法的基础。
3 代数性质与运算规则
3.1 交换律与结合律
循环卷积继承了卷积运算的基本代数性质。在适当的同一长度周期模型下,循环卷积满足:
- 交换律:\(x \circledast h = h \circledast x\);
- 结合律:\((x \circledast h) \circledast g = x \circledast (h \circledast g)\)。
原因在于循环卷积对应的求和结构本质上仍是“移位—逐点相乘—求和”的线性算子组合,只是移位按模 \(N\) 进行。
3.2 分配律与线性性
循环卷积对任一输入都保持线性: \[ x \circledast (\alpha h_1+\beta h_2)=\alpha (x \circledast h_1)+\beta (x \circledast h_2), \] 以及 \[ (\alpha x_1+\beta x_2)\circledast h=\alpha (x_1\circledast h)+\beta (x_2\circledast h). \] 因此,循环卷积可以看作一个线性变换:固定 \(h\) 时,它把 \(x\) 映射到 \(y\),并且整体行为与线性系统的叠加原理兼容。
3.3 单位元、零元与可逆性(从卷积角度理解)
- 零元:若某序列为零,则循环卷积结果为零序列。
- 单位元:可把“在模 \(N\) 意义下的冲激”作为单位元。即取 \( \delta[n] \) 满足 \(\delta[0]=1\),其余索引为 \(0\),则
\[ x \circledast \delta = x. \]
- 可逆性:当且仅当循环卷积核对应的频域表示不为零时,存在“逆卷积”使得恢复原序列。更直观地说,若卷积操作在频率方向上丢失了某些分量(频域为零),则信息不可恢复;反之若所有频率分量都被保留,就能构造逆运算。
3.4 循环卷积与相关运算的对应关系
相关运算与卷积非常接近,区别主要在于核函数是否做时间反转与共轭。在线性离散域中,相关与卷积之间可通过“翻转核”与复共轭来互相转换;在循环框架里同样成立,只是移位也必须按模 \(N\) 进行,因而相关的“对齐方式”与卷积在边界处的折叠同样一致。
4 频域视角:与 DFT 的联系
4.1 DFT/FFT 复习(最基本的符号约定)
长度为 \(N\) 的离散傅里叶变换(DFT)定义为 \[ X[k]=\sum_{n=0}^{N-1} x[n]\;e^{-j2\pi kn/N},\quad k=0,1,\dots,N-1, \] 其逆变换为 \[ x[n]=\frac{1}{N}\sum_{k=0}^{N-1} X[k]\;e^{j2\pi kn/N}. \] FFT 是 DFT 的快速实现方法,用于在较低时间复杂度下完成变换。
4.2 卷积定理:循环卷积与频域逐点相乘
循环卷积的核心定理表述为:若 \(y=x \circledast h\),并令 \(Y,H,X\) 分别为它们的 DFT,则对所有频率索引 \(k\) 有 \[ Y[k]=X[k]\;H[k]. \] 也就是说,时域的循环卷积对应频域的逐点乘法。这与线性卷积的情形不同:线性卷积要在适当零填充后才能通过类似方式用 FFT 实现。
4.3 频域实现的计算流程(步骤级概览)
利用上述卷积定理计算 \(y=x \circledast h\) 的典型步骤为:
1 循环卷积的基本定义
2 与线性离散卷积的关系
3 代数性质与运算规则
4 频域视角:与 DFT 的联系
当输入长度与循环卷积的 \(N\) 一致时,这一流程直接成立;若目标是线性卷积的一部分,则需要事先补零使其映射到合适的循环长度。
4.4 数值实现中的常见细节与注意点
实际计算中常见注意包括:
- 长度匹配:DFT/FFT 的点数必须与循环模型一致;长度不匹配会改变边界条件并引入折叠误差。
- 浮点误差:频域乘法与逆变换可能带来微小舍入误差,通常表现为数值偏差而非逻辑错误。
- 对复数数据的处理:若序列为复数,需使用复数 FFT 与复数乘法;必要时正确理解共轭与符号约定。
- 实现选择:FFT 的归一化因子在不同库中可能不同,需核对逆变换的尺度,避免整体倍数错误。
5 实例与计算演示
5.1 小规模手算示例(构造序列并演算)
取 \(N=4\),令 \[ x=[1,2,0,1],\quad h=[1,0,2,3], \] 索引从 \(0\) 到 \(3\)。循环卷积 \[ y[n]=\sum_{m=0}^{3} x[m]\,h[(n-m)\bmod 4]. \] 逐点计算:
- \(n=0\):
\[ y[0]=x[0]h[0]+x[1]h[3]+x[2]h[2]+x[3]h[1] =1\cdot 1+2\cdot 3+0\cdot 2+1\cdot 0=7. \]
- \(n=1\):
\[ y[1]=x[0]h[1]+x[1]h[0]+x[2]h[3]+x[3]h[2] =1\cdot 0+2\cdot 1+0\cdot 3+1\cdot 2=4. \]
- \(n=2\):
\[ y[2]=x[0]h[2]+x[1]h[1]+x[2]h[0]+x[3]h[3] =1\cdot 2+2\cdot 0+0\cdot 1+1\cdot 3=5. \]
- \(n=3\):
\[ y[3]=x[0]h[3]+x[1]h[2]+x[2]h[1]+x[3]h[0] =1\cdot 3+2\cdot 2+0\cdot 0+1\cdot 1=8. \] 因此 \[ y=[7,4,5,8]. \]
5.2 与线性卷积并行对比(展示绕回效应)
在同样 \(x\) 与 \(h\) 下,线性卷积的输出长度为 \(7\),其索引覆盖 \(0\) 到 \(6\)。当把线性卷积结果按模 \(4\) 折叠回长度 \(4\) 的区间时,前述循环结果会与折叠后的数值一致。直观上,线性卷积中落在索引 \(4\) 到 \(6\) 的贡献,会在循环卷积中“回到”索引 \(0\) 到 \(2\) 处,从而改变对应位置的数值。
5.3 周期序列滤波中的循环卷积应用示例
若 \(x[n]\) 表示一个本身周期为 \(N\) 的采样序列,且 \(h[n]\) 可视为“在一个周期内的滤波器响应”,则循环卷积可直接给出滤波输出。由于输入与系统响应都被建模为周期对象,边界处不会出现断裂;这在环形传输线、周期采样稳态分析等场景中较为自然。
6 应用场景与工程用法
6.1 周期信号的离散滤波
循环卷积常用于将滤波器运算限制在一个周期内:当系统被认为周期稳态,或数据天然以周期方式重复采样时,用循环卷积比线性卷积更贴合物理或建模假设。此时输出自然也是周期长度 \(N\) 的序列。
6.2 快速卷积:用 FFT 实现循环卷积
工程上最常见的动机是效率:直接按定义计算需要 \(O(N^2)\) 级别运算;利用 FFT 与频域逐点相乘,可把复杂度降低到 \(O(N\log N)\)。当需求确实是循环边界条件时,就可直接采用“FFT—乘法—逆 FFT”的流程。
6.3 循环边界的建模思路(如块处理中的边界处理)
在块处理(分段计算)中,如何处理分段边界会决定结果是否符合目标模型。若希望每个块都按周期“首尾相接”,则采用循环卷积的边界假设能简化实现;若目标是线性卷积,则通常需要补零或使用合适的块拼接策略,以避免折叠污染有效输出。
7 相关概念与扩展
7.1 循环相关(circular correlation)
循环相关与循环卷积密切相关,可看作“匹配度随循环移位变化”的度量。它通常涉及把一个序列在循环意义下移位,并与另一个序列逐点相乘求和;若涉及复数数据,还可能需要共轭操作。由于同样采用模 \(N\) 的索引回绕,相关的峰值位置可用于估计周期对齐或延迟。
7.2 循环多项式与卷积的环模型( \(\mathbb{Z}_N\) 视角)
从代数角度,可以把长度为 \(N\) 的序列看作在“模 \(N\)”框架下的等价类对象。相应的运算对应于在某种环结构中进行乘法,再将高次项依据 \(N\) 的关系规则折回。这样,循环卷积能够自然地与循环多项式乘法建立对应关系,便于理解其代数性质与频域分解之间的联系。
7.3 从循环卷积到循环相关的类比
循环相关与循环卷积在计算结构上非常相似:都能在循环移位的框架下完成逐点乘加;差别主要体现在移位方向与是否需要对核做反转/共轭。理解这一点有助于把同一套实现框架(例如基于 FFT 的方法)迁移到相关计算上。
7.4 进一步扩展:从一维到多维的循环卷积(概念层面)
在多维离散信号处理中,可以对每个维度分别施加循环边界条件,从而定义多维循环卷积。此时模运算扩展为对各维索引分别取模,求和范围也在多维网格上展开。概念上,多维循环卷积同样对应频域中逐点乘法(以多维 DFT 为基础),因此仍可利用快速变换实现高效计算。