gpt4 book ai didi

signal-processing - 为什么在时域和频域中执行时卷积结果具有不同的长度?

转载 作者:行者123 更新时间:2023-12-04 03:13:35 24 4
gpt4 key购买 nike

我不是 DSP 专家,但我知道有两种方法可以将离散时域滤波器应用于离散时域波形。第一个是在时域中对它们进行卷积,第二个是对两者进行 FFT,将两个复频谱相乘,并对结果进行 IFFT。这些方法的一个主要区别是第二种方法是循环卷积。

例如,如果滤波器和波形都是 N 点长,则第一种方法(即卷积)产生 N+N-1 点长的结果,其中该响应的前半部分是滤波器填满,第二部分是一半是过滤器排空。为了获得稳态响应,滤波器的点数需要少于要滤波的波形点数。

用第二种方法继续这个例子,假设离散时域波形数据都是真实的(不是复数),滤波器的 FFT 和波形都产生 N 点长的 FFT。将两个频谱相乘 IFFT'ing 结果会产生一个也是 N 点长的时域结果。这里滤波器填满和清空的响应在时域中相互重叠,没有稳态响应。这就是循环卷积的效果。为避免这种情况,通常滤波器尺寸将小于波形尺寸,并且两者都将被补零,以便在对两个频谱的乘积进行 IFFT 之后为频率卷积留出时间扩展的空间。

我的问题是,我经常看到知名专家/公司在文献中的工作,他们有一个离散(真实)时域波形(N 点),他们对其进行 FFT,乘以某个滤波器(也是 N 点),并对结果进行 IFFT 以供后续处理。我天真的想法是这个结果应该不包含稳态响应,因此应该包含来自过滤器填充/清空的伪影,这会导致解释结果数据的错误,但我一定遗漏了一些东西。在什么情况下这是一种有效的方法?

任何见解将不胜感激

最佳答案

基本问题不在于零填充与假设的周期性,而是傅立叶分析将信号分解为正弦波,在最基本的层面上,假设其范围是无限的。 两种方法都是正确的 因为使用完整 FFT 的 IFFT 将返回准确的输入波形,而 两种方法都不正确 因为使用少于全光谱会导致边缘效应(通常会扩展几个波长)。唯一的区别在于你假设的细节填充了无穷大的其余部分,而不是你是否在做假设。

回到您的第一段:通常,在 DSP 中,我遇到的 FFT 的最大问题是它们是非因果关系,因此我通常更喜欢停留在时域中,例如使用 FIR 和 IIR 滤波器.

更新:

在问题陈述中,OP 正确指出了使用 FFT 对信号进行滤波时可能出现的一些问题,例如边缘效应,在进行长度(在时域中)可比的卷积时,这些问题尤其成问题) 到采样波形。重要的是要注意,并非所有滤波都是使用 FFT 完成的,并且在 OP 引用的论文中,他们没有使用 FFT 滤波器,并且使用他们的方法不会出现 FFT 滤波器实现中出现的问题。

例如,考虑使用两种不同的实现方式对 128 个样本点进行简单平均的滤波器。

FFT :在 FFT/卷积方法中,会有一个样本,例如 256 个点,并将其与一个 wfm 卷积,该 wfm 在前半部分是恒定的,在后半部分变为零。这里的问题是(即使在这个系统运行了几个周期之后),是什么决定了结果的第一个点的值? FFT 假设 wfm 是圆形的(即无限周期),因此:结果的第一个点由 wfm 的最后 127 个(即 future )样本(跳过 wfm 的中间)或由 127 个零确定如果你零垫。两者都不正确。

FIR :另一种方法是使用 FIR 滤波器实现平均值。例如,这里可以使用 128 个寄存器的 FIFO 队列中的平均值。也就是说,当每个样本点进来时,1) 将其放入队列,2) 将最旧的项目出队,3) 对队列中剩余的所有 128 个项目求平均值;这是您对该样本点的结果。这种方法连续运行,一次处理一个点,并在每个样本后返回过滤后的结果,并且没有 FFT 在应用于有限样本块时出现的任何问题。每个结果只是当前样本和它之前的 127 个样本的平均值。

OP引用的论文采用了一种更类似于FIR滤波器而不是FFT滤波器的方法(注意虽然论文中的滤波器更复杂,整篇论文基本上是对这个滤波器的分析。)参见,例如, this free book它描述了如何分析和应用不同的滤波器,并还注意到拉普拉斯分析 FIR 和 IIR 滤波器的方法与引用的论文中发现的非常相似。

关于signal-processing - 为什么在时域和频域中执行时卷积结果具有不同的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3847312/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com