最近看论文发现了一个叫循环卷积的东西,这里学习并记录一下,方便以后查阅。
循环卷积(Circular Convolutions)
- [循环卷积(Circular Convolutions)](#循环卷积(Circular Convolutions))
-
- [1. 什么是循环卷积](#1. 什么是循环卷积)
- [2. 数学定义](#2. 数学定义)
- [3. 循环卷积与线性卷积的区别](#3. 循环卷积与线性卷积的区别)
- [4. 循环卷积的计算方法](#4. 循环卷积的计算方法)
-
- [方法 1:直接时域计算](#方法 1:直接时域计算)
- [方法 2:使用快速傅里叶变换(FFT)](#方法 2:使用快速傅里叶变换(FFT))
- [方法 3:矩阵形式](#方法 3:矩阵形式)
- [5. 实际应用](#5. 实际应用)
- [6. 注意事项](#6. 注意事项)
- [7. 总结](#7. 总结)
- 时域的循环卷积等价于频域的点乘
-
- [步骤 1:定义循环卷积和 DFT](#步骤 1:定义循环卷积和 DFT)
- [步骤 2:将循环卷积代入 DFT](#步骤 2:将循环卷积代入 DFT)
- [步骤 3:改变求和顺序](#步骤 3:改变求和顺序)
- [步骤 4:变量替换](#步骤 4:变量替换)
- [步骤 5:识别 DFT](#步骤 5:识别 DFT)
- [步骤 6:结论](#步骤 6:结论)
- 卷积(Convolution)
-
- [1. 什么是卷积](#1. 什么是卷积)
- [2. 卷积的数学定义](#2. 卷积的数学定义)
-
- [2.1 连续卷积](#2.1 连续卷积)
- [2.2 离散卷积(线性卷积)](#2.2 离散卷积(线性卷积))
- [3. 卷积的直观理解](#3. 卷积的直观理解)
- [4. 卷积的物理意义](#4. 卷积的物理意义)
- [5. 卷积的性质](#5. 卷积的性质)
- [6. 卷积的计算方法](#6. 卷积的计算方法)
-
- [6.1 时域直接计算](#6.1 时域直接计算)
- [6.2 频域计算(使用 FFT)](#6.2 频域计算(使用 FFT))
- [6.3 滑动窗口法](#6.3 滑动窗口法)
- [7. 卷积的实际应用](#7. 卷积的实际应用)
- [8. 总结](#8. 总结)
- 参考资料
循环卷积(Circular Convolutions)
1. 什么是循环卷积
循环卷积(Circular Convolution)是信号处理和数学中的一种运算,专门用于处理周期性 或有限长度 的离散信号。与普通的线性卷积(Linear Convolution)不同,循环卷积假设输入信号是周期性的,即信号在有限长度后会重复
。这种假设使得循环卷积在某些场景下(如数字信号处理、图像处理和快速傅里叶变换)非常有用。
循环卷积的输出长度与输入信号的长度相同,通常用于长度为 N N N 的离散信号。它的核心思想是将信号"环绕"起来,模拟一个循环的结构(可以想象信号的首尾连接成一个圆环)。
2. 数学定义
假设有两个长度为
N N N 的离散信号
x [ n ] x[n] x[n] 和 h [ n ] h[n] h[n],它们的循环卷积定义为:
y [ n ] = ( x ⊛ h ) [ n ] = ∑ m = 0 N − 1 x [ m ] h [ ( n − m ) m o d N ] y[n] = (x \circledast h)[n] = \sum_{m=0}^{N-1} x[m] h[(n - m) \mod N] y[n]=(x⊛h)[n]=m=0∑N−1x[m]h[(n−m)modN]
其中:
- ⊛ \circledast ⊛ 表示循环卷积运算。
- n = 0 , 1 , ... , N − 1 n = 0, 1, \dots, N-1 n=0,1,...,N−1 是输出信号的索引。
- ( n − m ) m o d N (n - m) \mod N (n−m)modN 确保索引是周期性的,即如果索引超出 [ 0 , N − 1 ] [0, N-1] [0,N−1],它会"绕回"到信号的开头。
关键点
- 模运算 :模运算 m o d N \mod N modN 是循环卷积的核心,它体现了信号的周期性。比如,如果 n − m = − 1 n - m = -1 n−m=−1,则 ( − 1 ) m o d N = N − 1 (-1) \mod N = N-1 (−1)modN=N−1,相当于从信号的末尾绕回到开头。
- 长度一致 :输入信号 x [ n ] x[n] x[n] 和 h [ n ] h[n] h[n] 必须长度相同(都为 N N N),输出 y [ n ] y[n] y[n] 的长度也是 N N N。
- 周期性假设 :循环卷积假设 x [ n ] x[n] x[n] 和 h [ n ] h[n] h[n] 是周期为 N N N 的信号,即 x [ n + N ] = x [ n ] x[n + N] = x[n] x[n+N]=x[n]。
3. 循环卷积与线性卷积的区别
要理解循环卷积,我们需要先对比一下线性卷积:
线性卷积
线性卷积是两个信号的"滑动叠加",没有周期性假设。假设 x [ n ] x[n] x[n] 长度为 M M M, h [ n ] h[n] h[n] 长度为 L L L,线性卷积的输出长度为 M + L − 1 M + L - 1 M+L−1,公式为:
y [ n ] = ( x ∗ h ) [ n ] = ∑ m x [ m ] h [ n − m ] y[n] = (x * h)[n] = \sum_{m} x[m] h[n - m] y[n]=(x∗h)[n]=m∑x[m]h[n−m]
其中,求和范围取决于信号的有效索引(通常需要补零来处理边界)。
循环卷积与线性卷积的差异
- 周期性 :
- 循环卷积假设信号是周期的,索引超出范围会绕回。
- 线性卷积不假设周期性,信号在边界外通常补零。
- 输出长度 :
- 循环卷积的输出长度等于输入长度 N N N。
- 线性卷积的输出长度为 M + L − 1 M + L - 1 M+L−1。
- 边界处理 :
- 循环卷积通过模运算处理边界,形成"环状"效果。
- 线性卷积在边界外补零,导致输出更长。
- 计算场景 :
- 循环卷积常用于周期信号或通过快速傅里叶变换(FFT)实现的场景。
- 线性卷积更适合非周期信号或直接时域计算。
特殊情况:循环卷积与线性卷积的关系
如果对两个长度为 N N N 的信号进行循环卷积,但通过补零使信号长度足够长(例如,补零到 2 N − 1 2N - 1 2N−1),可以让循环卷积的输出等价于线性卷积。这是因为补零避免了周期性带来的"混叠"效应。
4. 循环卷积的计算方法
循环卷积可以通过以下几种方式计算:
方法 1:直接时域计算
根据定义公式,直接计算:
y [ n ] = ∑ m = 0 N − 1 x [ m ] h [ ( n − m ) m o d N ] y[n] = \sum_{m=0}^{N-1} x[m] h[(n - m) \mod N] y[n]=m=0∑N−1x[m]h[(n−m)modN]
步骤:
- 对于每个 n = 0 , 1 , ... , N − 1 n = 0, 1, \dots, N-1 n=0,1,...,N−1,计算所有 m = 0 , 1 , ... , N − 1 m = 0, 1, \dots, N-1 m=0,1,...,N−1 的贡献。
- 使用模运算确定 h h h 的索引。
- 累加结果。
缺点 :计算复杂度为 O ( N 2 ) O(N^2) O(N2),对长信号效率较低。
示例 :
假设 x [ n ] = [ 1 , 2 , 3 , 4 ] x[n] = [1, 2, 3, 4] x[n]=[1,2,3,4], h [ n ] = [ 1 , 0 , 0 , 0 ] h[n] = [1, 0, 0, 0] h[n]=[1,0,0,0], N = 4 N = 4 N=4。
计算 y [ 0 ] y[0] y[0]:
y [ 0 ] = ∑ m = 0 3 x [ m ] h [ ( 0 − m ) m o d 4 ] = x [ 0 ] h [ 0 ] + x [ 1 ] h [ − 1 m o d 4 ] + x [ 2 ] h [ − 2 m o d 4 ] + x [ 3 ] h [ − 3 m o d 4 ] = 1 ⋅ 1 + 2 ⋅ 0 + 3 ⋅ 0 + 4 ⋅ 0 = 1 y[0] = \sum_{m=0}^{3} x[m] h[(0 - m) \mod 4] \\ = x[0]h[0] + x[1]h[-1 \mod 4] + x[2]h[-2 \mod 4] + x[3]h[-3 \mod 4] \\ = 1 \cdot 1 + 2 \cdot 0 + 3 \cdot 0 + 4 \cdot 0 = 1 y[0]=m=0∑3x[m]h[(0−m)mod4]=x[0]h[0]+x[1]h[−1mod4]+x[2]h[−2mod4]+x[3]h[−3mod4]=1⋅1+2⋅0+3⋅0+4⋅0=1
类似地计算 y [ 1 ] , y [ 2 ] , y [ 3 ] y[1], y[2], y[3] y[1],y[2],y[3],得到 y [ n ] = [ 1 , 2 , 3 , 4 ] y[n] = [1, 2, 3, 4] y[n]=[1,2,3,4]。
方法 2:使用快速傅里叶变换(FFT)
循环卷积可以通过频域高效计算,利用卷积定理:
- 时域的循环卷积等价于频域的点乘。
- 具体步骤:
- 对 x [ n ] x[n] x[n] 和 h [ n ] h[n] h[n] 进行 N N N 点 DFT(离散傅里叶变换),得到 X [ k ] X[k] X[k] 和 H [ k ] H[k] H[k]。
- 计算频域点乘: Y [ k ] = X [ k ] ⋅ H [ k ] Y[k] = X[k] \cdot H[k] Y[k]=X[k]⋅H[k]。
- 对 Y [ k ] Y[k] Y[k] 进行 IDFT(逆离散傅里叶变换),得到时域的 y [ n ] y[n] y[n]。
公式 :
y [ n ] = IDFT ( DFT ( x [ n ] ) ⋅ DFT ( h [ n ] ) ) y[n] = \text{IDFT}(\text{DFT}(x[n]) \cdot \text{DFT}(h[n])) y[n]=IDFT(DFT(x[n])⋅DFT(h[n]))
优点 :使用 FFT,计算复杂度降为 O ( N log N ) O(N \log N) O(NlogN),适合长信号。
方法 3:矩阵形式
循环卷积可以用矩阵表示, h [ n ] h[n] h[n] 形成一个循环矩阵。例如,对于 N = 3 N = 3 N=3, h [ n ] = [ h 0 , h 1 , h 2 ] h[n] = [h_0, h_1, h_2] h[n]=[h0,h1,h2],矩阵为:
H = [ h 0 h 2 h 1 h 1 h 0 h 2 h 2 h 1 h 0 ] H = \begin{bmatrix} h_0 & h_2 & h_1 \\ h_1 & h_0 & h_2 \\ h_2 & h_1 & h_0 \end{bmatrix} H= h0h1h2h2h0h1h1h2h0
则:
y = H ⋅ x y = H \cdot x y=H⋅x
这种方法直观,但计算复杂度仍为 O ( N 2 ) O(N^2) O(N2),实际中较少使用。
5. 实际应用
循环卷积在多个领域有广泛应用,尤其是在数字信号处理(DSP)和相关技术中:
- 数字滤波 :
- 循环卷积用于实现周期信号的滤波。例如,FIR滤波器可以通过循环卷积实现。
- 快速卷积 :
- 使用 FFT 实现循环卷积可以加速线性卷积的计算(通过补零)。
- 图像处理 :
- 在图像处理中,循环卷积用于周期性边界条件的滤波操作,如平滑或边缘检测。
- 通信系统 :
- 在 OFDM(正交频分复用)系统中,循环卷积用于处理循环前缀,消除符号间干扰。
- 音频信号处理 :
- 循环卷积用于实现混响、均衡器等效果。
- 周期性信号分析 :
- 循环卷积适合分析周期性信号,如在周期图谱分析中。
6. 注意事项
- 补零问题 :如果需要模拟线性卷积,必须补零到至少 M + L − 1 M + L - 1 M+L−1,否则循环卷积会引入混叠。
- 信号长度:输入信号长度必须一致,否则需要截断或补零对齐。
- 数值精度:使用 FFT 计算时,浮点运算可能引入微小误差。
7. 总结
循环卷积是一种针对周期性离散信号的卷积运算,通过模运算实现信号的"环绕"效果。它的核心特点是输出长度与输入相同,计算可以通过时域直接求和或频域 FFT 高效实现
。与线性卷积相比,循环卷积更适合周期性信号处理,广泛应用于数字信号处理、图像处理和通信系统等领域。
时域的循环卷积等价于频域的点乘
通过离散傅里叶变换(DFT)来计算循环卷积,并证明了卷积定理 在循环卷积中的应用:即时域的循环卷积等价于频域的点乘。
步骤 1:定义循环卷积和 DFT
首先,循环卷积 y [ n ] y[n] y[n] 定义为:
y [ n ] = ( x ⊛ h ) [ n ] = ∑ m = 0 N − 1 x [ m ] h [ ( n − m ) m o d N ] y[n] = (x \circledast h)[n] = \sum_{m=0}^{N-1} x[m] h[(n - m) \mod N] y[n]=(x⊛h)[n]=m=0∑N−1x[m]h[(n−m)modN]
其中 ( n − m ) m o d N (n - m) \mod N (n−m)modN 体现了循环卷积的周期性。
DFT 的定义为:对于长度 N N N 的信号 y [ n ] y[n] y[n],其 DFT Y [ k ] Y[k] Y[k] 为:
Y [ k ] = ∑ n = 0 N − 1 y [ n ] ⋅ e − i 2 π k n / N , k = 0 , 1 , ... , N − 1 Y[k] = \sum_{n=0}^{N-1} y[n] \cdot e^{-i 2\pi kn / N}, \quad k = 0, 1, \dots, N-1 Y[k]=n=0∑N−1y[n]⋅e−i2πkn/N,k=0,1,...,N−1
目标是计算 Y [ k ] Y[k] Y[k],即 y [ n ] y[n] y[n] 的 DFT。
步骤 2:将循环卷积代入 DFT
将 y [ n ] y[n] y[n] 的表达式代入 DFT 公式:
Y [ k ] = ∑ n = 0 N − 1 y [ n ] ⋅ e − i 2 π k n / N Y[k] = \sum_{n=0}^{N-1} y[n] \cdot e^{-i 2\pi kn / N} Y[k]=n=0∑N−1y[n]⋅e−i2πkn/N
Y [ k ] = ∑ n = 0 N − 1 ( ∑ m = 0 N − 1 x [ m ] h [ ( n − m ) m o d N ] ) ⋅ e − i 2 π k n / N Y[k] = \sum_{n=0}^{N-1} \left( \sum_{m=0}^{N-1} x[m] h[(n - m) \mod N] \right) \cdot e^{-i 2\pi kn / N} Y[k]=n=0∑N−1(m=0∑N−1x[m]h[(n−m)modN])⋅e−i2πkn/N
这个公式直接将循环卷积的定义代入了 DFT,表示 y [ n ] y[n] y[n] 是 x [ m ] x[m] x[m] 和 h [ ( n − m ) m o d N ] h[(n - m) \mod N] h[(n−m)modN] 的加权和。
步骤 3:改变求和顺序
由于求和是线性的,可以交换 n n n 和 m m m 的求和顺序:
Y [ k ] = ∑ m = 0 N − 1 x [ m ] ∑ n = 0 N − 1 h [ ( n − m ) m o d N ] ⋅ e − i 2 π k n / N Y[k] = \sum_{m=0}^{N-1} x[m] \sum_{n=0}^{N-1} h[(n - m) \mod N] \cdot e^{-i 2\pi kn / N} Y[k]=m=0∑N−1x[m]n=0∑N−1h[(n−m)modN]⋅e−i2πkn/N
这里, x [ m ] x[m] x[m] 不依赖于 n n n,所以可以提到 ∑ n \sum_{n} ∑n 的外面。公式变成了一个双重求和:外层对 m m m 求和,内层对 n n n 求和。
步骤 4:变量替换
为了简化内层求和,引入变量替换 r = ( n − m ) m o d N r = (n - m) \mod N r=(n−m)modN。这意味着:
- 当 n = 0 , 1 , ... , N − 1 n = 0, 1, \dots, N-1 n=0,1,...,N−1,对于固定的 m m m, r = ( n − m ) m o d N r = (n - m) \mod N r=(n−m)modN 也会遍历 0 , 1 , ... , N − 1 0, 1, \dots, N-1 0,1,...,N−1。
- 同时, n = ( r + m ) m o d N n = (r + m) \mod N n=(r+m)modN。
将 n n n 用 r r r 表示后,内层求和变为:
∑ n = 0 N − 1 h [ ( n − m ) m o d N ] ⋅ e − i 2 π k n / N \sum_{n=0}^{N-1} h[(n - m) \mod N] \cdot e^{-i 2\pi kn / N} n=0∑N−1h[(n−m)modN]⋅e−i2πkn/N
注意到 ( n − m ) m o d N = r (n - m) \mod N = r (n−m)modN=r,并且 n = ( r + m ) m o d N n = (r + m) \mod N n=(r+m)modN。代入 n = r + m n = r + m n=r+m(这里为了简化,我们考虑模运算的周期性,实际计算中 r r r 的范围已经覆盖了所有可能值),指数项变为:
e − i 2 π k ( r + m ) / N = e − i 2 π k r / N ⋅ e − i 2 π k m / N e^{-i 2\pi k (r + m) / N} = e^{-i 2\pi kr / N} \cdot e^{-i 2\pi km / N} e−i2πk(r+m)/N=e−i2πkr/N⋅e−i2πkm/N
因此,公式变为:
Y [ k ] = ∑ m = 0 N − 1 x [ m ] ⋅ e − i 2 π k m / N ∑ r = 0 N − 1 h [ r ] ⋅ e − i 2 π k r / N Y[k] = \sum_{m=0}^{N-1} x[m] \cdot e^{-i 2\pi km / N} \sum_{r=0}^{N-1} h[r] \cdot e^{-i 2\pi kr / N} Y[k]=m=0∑N−1x[m]⋅e−i2πkm/Nr=0∑N−1h[r]⋅e−i2πkr/N
步骤 5:识别 DFT
观察到:
- 内层求和 ∑ r = 0 N − 1 h [ r ] ⋅ e − i 2 π k r / N \sum_{r=0}^{N-1} h[r] \cdot e^{-i 2\pi kr / N} ∑r=0N−1h[r]⋅e−i2πkr/N 正是 h [ n ] h[n] h[n] 的 DFT,即 H [ k ] H[k] H[k]。
- 外层求和 ∑ m = 0 N − 1 x [ m ] ⋅ e − i 2 π k m / N \sum_{m=0}^{N-1} x[m] \cdot e^{-i 2\pi km / N} ∑m=0N−1x[m]⋅e−i2πkm/N 正是 x [ n ] x[n] x[n] 的 DFT,即 X [ k ] X[k] X[k]。
因此:
Y [ k ] = ( ∑ m = 0 N − 1 x [ m ] ⋅ e − i 2 π k m / N ) ⋅ ( ∑ r = 0 N − 1 h [ r ] ⋅ e − i 2 π k r / N ) Y[k] = \left( \sum_{m=0}^{N-1} x[m] \cdot e^{-i 2\pi km / N} \right) \cdot \left( \sum_{r=0}^{N-1} h[r] \cdot e^{-i 2\pi kr / N} \right) Y[k]=(m=0∑N−1x[m]⋅e−i2πkm/N)⋅(r=0∑N−1h[r]⋅e−i2πkr/N)
Y [ k ] = X [ k ] ⋅ H [ k ] Y[k] = X[k] \cdot H[k] Y[k]=X[k]⋅H[k]
步骤 6:结论
通过上述推导,我们证明了:
Y [ k ] = X [ k ] ⋅ H [ k ] Y[k] = X[k] \cdot H[k] Y[k]=X[k]⋅H[k]
即,循环卷积 y [ n ] = ( x ⊛ h ) [ n ] y[n] = (x \circledast h)[n] y[n]=(x⊛h)[n] 的 DFT 是 X [ k ] X[k] X[k] 和 H [ k ] H[k] H[k] 的逐点乘积。这正是卷积定理在循环卷积中的体现。
卷积(Convolution)
1. 什么是卷积
卷积是一种数学运算
,用于描述两个函数(或信号)之间的"混合"或"叠加"效应。在信号处理、图像处理、概率论等领域,卷积是非常核心的操作。它的本质是通过一个函数(通常称为"核"或"滤波器")对另一个函数进行加权平均,生成一个新的函数
。
卷积用极简的数学形式漂亮的描述了一个动态过程。
卷积有两种主要形式:
- 连续卷积:用于连续时间信号(如模拟信号)。
- 离散卷积:用于离散时间信号(如数字信号)。
此外,根据信号的周期性假设,还分为:
- 线性卷积:不假设信号周期性,边界外补零。
- 循环卷积:假设信号周期性,索引超出范围会"环绕"。
2. 卷积的数学定义
2.1 连续卷积
对于两个连续函数 f ( t ) f(t) f(t) 和 g ( t ) g(t) g(t),它们的卷积定义为:
( f ∗ g ) ( t ) = ∫ − ∞ ∞ f ( τ ) g ( t − τ ) d τ (f * g)(t) = \int_{-\infty}^{\infty} f(\tau) g(t - \tau) d\tau (f∗g)(t)=∫−∞∞f(τ)g(t−τ)dτ
其中:
- ∗ * ∗ 表示卷积运算。
- τ \tau τ 是积分变量,表示时间偏移。
- g ( t − τ ) g(t - \tau) g(t−τ) 是 g ( t ) g(t) g(t) 的时间反转和位移版本。
2.2 离散卷积(线性卷积)
对于两个离散信号 x [ n ] x[n] x[n] 和 h [ n ] h[n] h[n],它们的线性卷积定义为:
y [ n ] = ( x ∗ h ) [ n ] = ∑ m = − ∞ ∞ x [ m ] h [ n − m ] y[n] = (x * h)[n] = \sum_{m=-\infty}^{\infty} x[m] h[n - m] y[n]=(x∗h)[n]=m=−∞∑∞x[m]h[n−m]
在实际中,信号通常是有限长度的:
- 假设 x [ n ] x[n] x[n] 长度为 M M M, h [ n ] h[n] h[n] 长度为 L L L,则:
- x [ n ] x[n] x[n] 在 n = 0 , 1 , ... , M − 1 n = 0, 1, \dots, M-1 n=0,1,...,M−1 有值,其余为 0。
- h [ n ] h[n] h[n] 在 n = 0 , 1 , ... , L − 1 n = 0, 1, \dots, L-1 n=0,1,...,L−1 有值,其余为 0。
- 此时,求和范围可以简化为有效部分:
y [ n ] = ∑ m = 0 M − 1 x [ m ] h [ n − m ] y[n] = \sum_{m=0}^{M-1} x[m] h[n - m] y[n]=m=0∑M−1x[m]h[n−m] - 输出 y [ n ] y[n] y[n] 的长度为 M + L − 1 M + L - 1 M+L−1,因为 n − m n - m n−m 的有效范围使得 n n n 从 0 到 M + L − 2 M + L - 2 M+L−2。
3. 卷积的直观理解
卷积的计算过程可以看作一种"滑动窗口"操作
:
- 反转 :将一个信号(例如 h [ n ] h[n] h[n])进行时间反转,得到 h [ − m ] h[-m] h[−m]。
- 位移 :将反转后的信号 h [ − m ] h[-m] h[−m] 滑动到位置 n n n,变成 h [ n − m ] h[n - m] h[n−m]。
- 乘积并求和 :在每个位置 n n n,将 x [ m ] x[m] x[m] 和 h [ n − m ] h[n - m] h[n−m] 逐点相乘,然后对所有 m m m 求和,得到 y [ n ] y[n] y[n]。
形象化理解:
- 想象 x [ n ] x[n] x[n] 是一个输入信号, h [ n ] h[n] h[n] 是一个"
滤波器
"或"系统响应"。 - 卷积的过程是:用 h [ n ] h[n] h[n] 的反转版本去"扫描" x [ n ] x[n] x[n],在每个位置计算加权和,生成输出信号 y [ n ] y[n] y[n]。




示例
假设 x [ n ] = [ 1 , 2 , 3 ] x[n] = [1, 2, 3] x[n]=[1,2,3], h [ n ] = [ 1 , 1 ] h[n] = [1, 1] h[n]=[1,1],我们计算线性卷积:
- x [ n ] x[n] x[n] 长度 M = 3 M = 3 M=3, h [ n ] h[n] h[n] 长度 L = 2 L = 2 L=2。
- 输出长度为 M + L − 1 = 4 M + L - 1 = 4 M+L−1=4。
计算 y [ n ] y[n] y[n]:
y [ n ] = ∑ m = 0 2 x [ m ] h [ n − m ] y[n] = \sum_{m=0}^{2} x[m] h[n - m] y[n]=m=0∑2x[m]h[n−m]
- n = 0 n = 0 n=0:
y [ 0 ] = x [ 0 ] h [ 0 ] + x [ 1 ] h [ − 1 ] + x [ 2 ] h [ − 2 ] = 1 ⋅ 1 + 2 ⋅ 0 + 3 ⋅ 0 = 1 y[0] = x[0]h[0] + x[1]h[-1] + x[2]h[-2] = 1 \cdot 1 + 2 \cdot 0 + 3 \cdot 0 = 1 y[0]=x[0]h[0]+x[1]h[−1]+x[2]h[−2]=1⋅1+2⋅0+3⋅0=1 - n = 1 n = 1 n=1:
y [ 1 ] = x [ 0 ] h [ 1 ] + x [ 1 ] h [ 0 ] + x [ 2 ] h [ − 1 ] = 1 ⋅ 1 + 2 ⋅ 1 + 3 ⋅ 0 = 1 + 2 = 3 y[1] = x[0]h[1] + x[1]h[0] + x[2]h[-1] = 1 \cdot 1 + 2 \cdot 1 + 3 \cdot 0 = 1 + 2 = 3 y[1]=x[0]h[1]+x[1]h[0]+x[2]h[−1]=1⋅1+2⋅1+3⋅0=1+2=3 - n = 2 n = 2 n=2:
y [ 2 ] = x [ 0 ] h [ 2 ] + x [ 1 ] h [ 1 ] + x [ 2 ] h [ 0 ] = 1 ⋅ 0 + 2 ⋅ 1 + 3 ⋅ 1 = 0 + 2 + 3 = 5 y[2] = x[0]h[2] + x[1]h[1] + x[2]h[0] = 1 \cdot 0 + 2 \cdot 1 + 3 \cdot 1 = 0 + 2 + 3 = 5 y[2]=x[0]h[2]+x[1]h[1]+x[2]h[0]=1⋅0+2⋅1+3⋅1=0+2+3=5 - n = 3 n = 3 n=3:
y [ 3 ] = x [ 0 ] h [ 3 ] + x [ 1 ] h [ 2 ] + x [ 2 ] h [ 1 ] = 1 ⋅ 0 + 2 ⋅ 0 + 3 ⋅ 1 = 0 + 0 + 3 = 3 y[3] = x[0]h[3] + x[1]h[2] + x[2]h[1] = 1 \cdot 0 + 2 \cdot 0 + 3 \cdot 1 = 0 + 0 + 3 = 3 y[3]=x[0]h[3]+x[1]h[2]+x[2]h[1]=1⋅0+2⋅0+3⋅1=0+0+3=3
所以, y [ n ] = [ 1 , 3 , 5 , 3 ] y[n] = [1, 3, 5, 3] y[n]=[1,3,5,3]。
4. 卷积的物理意义
卷积在物理和工程中有重要的意义:
-
系统响应:
- 在线性时不变(LTI)系统中,输入信号 x [ n ] x[n] x[n] 通过系统 h [ n ] h[n] h[n](系统的冲激响应)生成输出 y [ n ] y[n] y[n]。
- 卷积描述了输入如何被系统"过滤"或"变换"。
- 例如:音频信号通过扬声器,输入信号 x [ n ] x[n] x[n] 和扬声器的冲激响应 h [ n ] h[n] h[n] 卷积后得到输出。
-
加权平均:
- 卷积可以看作一种加权平均, h [ n ] h[n] h[n] 决定了每个输入点的权重。
- 例如:平滑滤波器(如均值滤波器)通过卷积去除信号中的噪声。
-
信号混合:
- 卷积描述了两个信号的"叠加"效应,例如在概率论中,两个独立随机变量的概率密度函数的卷积给出了和的概率密度。
5. 卷积的性质
卷积有以下重要性质:
-
交换律 :
f ∗ g = g ∗ f f * g = g * f f∗g=g∗f即 ( x ∗ h ) [ n ] = ( h ∗ x ) [ n ] (x * h)[n] = (h * x)[n] (x∗h)[n]=(h∗x)[n]。这意味着 h [ n − m ] h[n - m] h[n−m] 可以看作 x [ n − m ] x[n - m] x[n−m]。
-
结合律 :
( f ∗ g ) ∗ h = f ∗ ( g ∗ h ) (f * g) * h = f * (g * h) (f∗g)∗h=f∗(g∗h)卷积可以按任意顺序分组计算。
-
分配律 :
f ∗ ( g + h ) = ( f ∗ g ) + ( f ∗ h ) f * (g + h) = (f * g) + (f * h) f∗(g+h)=(f∗g)+(f∗h)卷积对加法具有分配性。
-
频域性质(卷积定理):
- 时域的卷积对应于频域的乘积:
DFT ( x ∗ h ) = DFT ( x ) ⋅ DFT ( h ) \text{DFT}(x * h) = \text{DFT}(x) \cdot \text{DFT}(h) DFT(x∗h)=DFT(x)⋅DFT(h) - 对于线性卷积,需要补零以避免混叠(之前已讨论)。
- 时域的卷积对应于频域的乘积:
6. 卷积的计算方法
卷积可以通过以下方式计算:
6.1 时域直接计算
直接使用定义公式:
y [ n ] = ∑ m x [ m ] h [ n − m ] y[n] = \sum_{m} x[m] h[n - m] y[n]=m∑x[m]h[n−m]
- 复杂度 :对于长度 M M M 和 L L L 的信号,复杂度为 O ( M ⋅ L ) O(M \cdot L) O(M⋅L)。
- 适用场景:短信号或需要直观理解时。
6.2 频域计算(使用 FFT)
根据卷积定理:
- 补零 x [ n ] x[n] x[n] 和 h [ n ] h[n] h[n] 到长度 N ≥ M + L − 1 N \geq M + L - 1 N≥M+L−1。
- 计算 X [ k ] = DFT ( x [ n ] ) X[k] = \text{DFT}(x[n]) X[k]=DFT(x[n]), H [ k ] = DFT ( h [ n ] ) H[k] = \text{DFT}(h[n]) H[k]=DFT(h[n])。
- 频域点乘: Y [ k ] = X [ k ] ⋅ H [ k ] Y[k] = X[k] \cdot H[k] Y[k]=X[k]⋅H[k]。
- 逆 DFT: y [ n ] = IDFT ( Y [ k ] ) y[n] = \text{IDFT}(Y[k]) y[n]=IDFT(Y[k])。
- 复杂度 :使用 FFT,复杂度为 O ( N log N ) O(N \log N) O(NlogN),通常比直接计算快。
- 适用场景:长信号。
6.3 滑动窗口法
手动计算时,可以用滑动窗口的方式,直观但效率较低。
7. 卷积的实际应用
卷积在多个领域有广泛应用:
- 信号处理 :
- 滤波:用卷积实现低通、高通滤波器(如平滑信号、去除噪声)。
- 混响:音频信号通过卷积添加混响效果。
- 图像处理 :
- 边缘检测:用卷积核(如 Sobel 核)检测图像边缘。
- 模糊:用高斯核进行卷积,实现图像模糊。
- 通信系统 :
- 通道效应:信号通过通信信道时,信道的冲激响应与输入信号卷积。
- OFDM:使用循环卷积处理循环前缀。
- 概率论 :
- 两个独立随机变量的和的概率密度是它们概率密度的卷积。
- 机器学习 :
- 卷积神经网络(CNN):卷积操作用于特征提取,捕捉图像的空间结构。
8. 总结
卷积是一种描述两个函数"混合"的数学运算,在时域表现为滑动加权平均,在频域表现为点乘(卷积定理)
。它在信号处理、图像处理、通信系统等领域有广泛应用。线性卷积适用于非周期信号,而循环卷积适用于周期信号,两者通过补零可以互相转换。计算卷积可以直接在时域进行,也可以通过 FFT 在频域高效实现。