Scipy resample,“傅立叶法”解释

信息处理 下采样 scipy
2022-01-09 21:37:32

我正在寻求解释在 resample() 方法的文档中描述的用于重采样的“傅立叶方法”。我想对数组进行下采样。我知道抽取是什么以及它是如何工作的,我也知道傅里叶变换是什么。但是,我无法找到“科学备份”,可以对 scipy 中的重新采样方法说。我看到了这个话题:

蟒蛇的resample对比resample_poly对比decimate

我还搜索了一些有关数字信号处理的书籍。我错过了一些明显的东西吗?我查看了 resample 的实现,我知道它对信号执行傅立叶变换,然后从变换数组的开头和结尾取所需的一半样本。然后将傅立叶逆变换返回到时域。我找不到这种方法的科学描述。在上面的链接中,提到了这一点:

https://en.wikipedia.org/wiki/Trigonometric_interpolation#Relation_with_the_discrete_Fourier_transform

我不明白插值如何与下采样相关联。谁能解释和/或链接一些资源?Scipy docs在方法描述中有这个:

沿给定轴使用傅里叶方法x对样本进行重采样。num

The resampled signal starts at the same value as `x` but is sampled
with a spacing of ``len(x) / num * (spacing of x)``.  Because a
Fourier method is used, the signal is assumed to be periodic.

提前致谢。

1个回答

假设您最初有一个x长度为实值的序列N该功能基本上是这样做的:

  • 为了上采样,它转换到频域并N/2在最后添加零。然后它转换回时域。
  • 为了下采样,它转换到频域并删除第二组和第三组N/4元素(对应于具有最高频率分量的一半)。然后它变回来。

您可以在自己的运行中逐步尝试该功能的源代码resample()

关于这些方法的理论可以在这个答案中找到。