由于高斯函数的卷积而产生的混叠

信息处理 Python 混叠
2022-02-05 17:10:04

对于两个离散时间序列f[n]g[n], 他们的线性卷积(fg)[n]也由

fg=F1(F(f)F(g)),
在哪里FF1分别表示 DTFT(离散时间傅里叶变换)和 IDTFT(离散时间傅里叶逆变换)。

让我们考虑两个高斯序列f[k]g[k]在动量空间中,我们想使用上面的公式对它们进行卷积。

import numpy as np
import matplotlib.pyplot as plt

L = 17.5
N = 48
dx = L/N
dk = 2*np.pi/L 
x = np.arange(N)*dx - L/2
k = 2*np.pi * np.fft.fftfreq(N, dx)

alpha = 1
beta = 1

def f(k):
   return np.sqrt(np.pi/alpha) * np.exp(-k**2/(4*alpha))

def g(k):
   return np.sqrt(np.pi/beta) * np.exp(-k**2/(4*beta))

fs = np.array([f(k_) for k_ in k])
gs = np.array([g(k_) for k_ in k])

fftconvfg = np.fft.ifft(fs * gs)

plt.plot(ks, np.fft.fftshift(fftconvfg))

我得到以下情节。在此处输入图像描述

问题

我如何证明我的绘图是(或不是)受混叠伪影的影响?如果存在混叠伪影,我该如何摆脱它?

1个回答

简短回答:对于两个高斯序列的卷积,会有混叠。

如果作为线性卷积的结果产生的序列具有无限的支持域,那么在使用 DFT(离散傅里叶变换)隐含的循环卷积实现线性卷积的傅里叶域实现中总是存在混叠,用于表示在您的问题中提供定理的理论 DTFT。

因此,如果您想要问题中定理的无别名实现,则结果信号(真正的线性卷积的结果)必须具有有限长度。

话虽如此,对于许多实际情况,混叠引起的失真量很小,以至于在任何 ADC 步长之后丢失,甚至小于用于实现算法的浮点数系统可表示的失真量。在这种情况下,它实际上可以被认为是对真正的线性卷积的充分实现。