最近看论文发现了一个叫循环卷积的东西,这里学习并记录一下,方便以后查阅。
循环卷积(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 xn xn 和 h n hn hn,它们的循环卷积定义为:
y n = ( x ⊛ h ) n = ∑ m = 0 N − 1 x m h ( n − m ) m o d N yn = (x \circledast h)n = \sum_{m=0}^{N-1} xm h(n - m) \\mod N yn=(x⊛h)n=m=0∑N−1xmh(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 xn xn 和 h n hn hn 必须长度相同(都为 N N N),输出 y n yn yn 的长度也是 N N N。
- 周期性假设 :循环卷积假设 x n xn xn 和 h n hn hn 是周期为 N N N 的信号,即 x n + N = x n xn + N = xn xn+N=xn。
3. 循环卷积与线性卷积的区别
要理解循环卷积,我们需要先对比一下线性卷积:
线性卷积
线性卷积是两个信号的"滑动叠加",没有周期性假设。假设 x n xn xn 长度为 M M M, h n hn hn 长度为 L L L,线性卷积的输出长度为 M + L − 1 M + L - 1 M+L−1,公式为:
y n = ( x ∗ h ) n = ∑ m x m h n − m yn = (x * h)n = \sum_{m} xm hn - m yn=(x∗h)n=m∑xmhn−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 yn = \sum_{m=0}^{N-1} xm h(n - m) \\mod N yn=m=0∑N−1xmh(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 xn = 1, 2, 3, 4 xn=1,2,3,4, h n = 1 , 0 , 0 , 0 hn = 1, 0, 0, 0 hn=1,0,0,0, N = 4 N = 4 N=4。
计算 y 0 y0 y0:
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 y0 = \sum_{m=0}^{3} xm h(0 - m) \\mod 4 \\ = x0h0 + x1h-1 \\mod 4 + x2h-2 \\mod 4 + x3h-3 \\mod 4 \\ = 1 \cdot 1 + 2 \cdot 0 + 3 \cdot 0 + 4 \cdot 0 = 1 y0=m=0∑3xmh(0−m)mod4=x0h0+x1h−1mod4+x2h−2mod4+x3h−3mod4=1⋅1+2⋅0+3⋅0+4⋅0=1
类似地计算 y 1 , y 2 , y 3 y1, y2, y3 y1,y2,y3,得到 y n = 1 , 2 , 3 , 4 yn = 1, 2, 3, 4 yn=1,2,3,4。
方法 2:使用快速傅里叶变换(FFT)
循环卷积可以通过频域高效计算,利用卷积定理:
- 时域的循环卷积等价于频域的点乘。
- 具体步骤:
- 对 x n xn xn 和 h n hn hn 进行 N N N 点 DFT(离散傅里叶变换),得到 X k Xk Xk 和 H k Hk Hk。
- 计算频域点乘: Y k = X k ⋅ H k Yk = Xk \cdot Hk Yk=Xk⋅Hk。
- 对 Y k Yk Yk 进行 IDFT(逆离散傅里叶变换),得到时域的 y n yn yn。
公式 :
y n = IDFT ( DFT ( x n ) ⋅ DFT ( h n ) ) yn = \text{IDFT}(\text{DFT}(xn) \cdot \text{DFT}(hn)) yn=IDFT(DFT(xn)⋅DFT(hn))
优点 :使用 FFT,计算复杂度降为 O ( N log N ) O(N \log N) O(NlogN),适合长信号。
方法 3:矩阵形式
循环卷积可以用矩阵表示, h n hn hn 形成一个循环矩阵。例如,对于 N = 3 N = 3 N=3, h n = h 0 , h 1 , h 2 hn = h_0, h_1, h_2 hn=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 yn yn 定义为:
y n = ( x ⊛ h ) n = ∑ m = 0 N − 1 x m h ( n − m ) m o d N yn = (x \circledast h)n = \sum_{m=0}^{N-1} xm h(n - m) \\mod N yn=(x⊛h)n=m=0∑N−1xmh(n−m)modN
其中 ( n − m ) m o d N (n - m) \mod N (n−m)modN 体现了循环卷积的周期性。
DFT 的定义为:对于长度 N N N 的信号 y n yn yn,其 DFT Y k Yk Yk 为:
Y k = ∑ n = 0 N − 1 y n ⋅ e − i 2 π k n / N , k = 0 , 1 , ... , N − 1 Yk = \sum_{n=0}^{N-1} yn \cdot e^{-i 2\pi kn / N}, \quad k = 0, 1, \dots, N-1 Yk=n=0∑N−1yn⋅e−i2πkn/N,k=0,1,...,N−1
目标是计算 Y k Yk Yk,即 y n yn yn 的 DFT。
步骤 2:将循环卷积代入 DFT
将 y n yn yn 的表达式代入 DFT 公式:
Y k = ∑ n = 0 N − 1 y n ⋅ e − i 2 π k n / N Yk = \sum_{n=0}^{N-1} yn \cdot e^{-i 2\pi kn / N} Yk=n=0∑N−1yn⋅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 Yk = \sum_{n=0}^{N-1} \left( \sum_{m=0}^{N-1} xm h(n - m) \\mod N \right) \cdot e^{-i 2\pi kn / N} Yk=n=0∑N−1(m=0∑N−1xmh(n−m)modN)⋅e−i2πkn/N
这个公式直接将循环卷积的定义代入了 DFT,表示 y n yn yn 是 x m xm xm 和 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 Yk = \sum_{m=0}^{N-1} xm \sum_{n=0}^{N-1} h(n - m) \\mod N \cdot e^{-i 2\pi kn / N} Yk=m=0∑N−1xmn=0∑N−1h(n−m)modN⋅e−i2πkn/N
这里, x m xm xm 不依赖于 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 Yk = \sum_{m=0}^{N-1} xm \cdot e^{-i 2\pi km / N} \sum_{r=0}^{N-1} hr \cdot e^{-i 2\pi kr / N} Yk=m=0∑N−1xm⋅e−i2πkm/Nr=0∑N−1hr⋅e−i2πkr/N
步骤 5:识别 DFT
观察到:
- 内层求和 ∑ r = 0 N − 1 h r ⋅ e − i 2 π k r / N \sum_{r=0}^{N-1} hr \cdot e^{-i 2\pi kr / N} ∑r=0N−1hr⋅e−i2πkr/N 正是 h n hn hn 的 DFT,即 H k Hk Hk。
- 外层求和 ∑ m = 0 N − 1 x m ⋅ e − i 2 π k m / N \sum_{m=0}^{N-1} xm \cdot e^{-i 2\pi km / N} ∑m=0N−1xm⋅e−i2πkm/N 正是 x n xn xn 的 DFT,即 X k Xk Xk。
因此:
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 ) Yk = \left( \sum_{m=0}^{N-1} xm \cdot e^{-i 2\pi km / N} \right) \cdot \left( \sum_{r=0}^{N-1} hr \cdot e^{-i 2\pi kr / N} \right) Yk=(m=0∑N−1xm⋅e−i2πkm/N)⋅(r=0∑N−1hr⋅e−i2πkr/N)
Y k = X k ⋅ H k Yk = Xk \cdot Hk Yk=Xk⋅Hk
步骤 6:结论
通过上述推导,我们证明了:
Y k = X k ⋅ H k Yk = Xk \cdot Hk Yk=Xk⋅Hk
即,循环卷积 y n = ( x ⊛ h ) n yn = (x \circledast h)n yn=(x⊛h)n 的 DFT 是 X k Xk Xk 和 H k Hk Hk 的逐点乘积。这正是卷积定理在循环卷积中的体现。
卷积(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 xn xn 和 h n hn hn,它们的线性卷积定义为:
y n = ( x ∗ h ) n = ∑ m = − ∞ ∞ x m h n − m yn = (x * h)n = \sum_{m=-\infty}^{\infty} xm hn - m yn=(x∗h)n=m=−∞∑∞xmhn−m
在实际中,信号通常是有限长度的:
- 假设 x n xn xn 长度为 M M M, h n hn hn 长度为 L L L,则:
- x n xn xn 在 n = 0 , 1 , ... , M − 1 n = 0, 1, \dots, M-1 n=0,1,...,M−1 有值,其余为 0。
- h n hn hn 在 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 yn = \sum_{m=0}^{M-1} xm hn - m yn=m=0∑M−1xmhn−m - 输出 y n yn yn 的长度为 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 hn hn)进行时间反转,得到 h − m h-m h−m。
- 位移 :将反转后的信号 h − m h-m h−m 滑动到位置 n n n,变成 h n − m hn - m hn−m。
- 乘积并求和 :在每个位置 n n n,将 x m xm xm 和 h n − m hn - m hn−m 逐点相乘,然后对所有 m m m 求和,得到 y n yn yn。
形象化理解:
- 想象 x n xn xn 是一个输入信号, h n hn hn 是一个"
滤波器"或"系统响应"。 - 卷积的过程是:用 h n hn hn 的反转版本去"扫描" x n xn xn,在每个位置计算加权和,生成输出信号 y n yn yn。




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