【问题标题】:FFT: Match samples to frequencyFFT:将样本与频率匹配
【发布时间】:2012-11-11 05:39:13
【问题描述】:

让我们假设,

  • 我有一个向量 t,其中包含我的样本的时间(以秒为单位)。 (这些样本在时域上分布不均。

  • 我还有一个向量数据,其中包含时间 t 的样本值。

  • t 和 data 长度相同。

如果我绘制图表,则会获得某种周期性信号。

现在我可以执行:abs(fft(data)) 来获取我的光谱,然后将其绘制在 x 轴上的数据点数量上。

如何获得关于向量 t 中时间的频谱并绘制它? 我想查看我的信号包含 1/s 中的哪些频率或 s 中的哪些周期。

感谢您的帮助。

【问题讨论】:

  • 这更适合dsp.stackexchange.com。但我不认为傅里叶变换非常适合这个问题,至少在它的基本形式中,它假设样本在时间上是均匀分布的。

标签: matlab time fft sampling


【解决方案1】:

[不是 OP 的意图]:FFT 将为您提供任意数量的输入数据点的频谱(全局)。您不能拥有与部分(或全部)光谱相关联的特定数据点(时间)。

您可以改为使用spectrogram 并获取Short-Time Fourier Transform (STFT)。这将为您提供NxM 时频 FT 值的离散网格(N:FT 频率区间,M:信号时间窗口)。

通过在您感兴趣的数据样本上定位(重叠)STFT 窗口,您将获得 N 个频率幅度值,因此 短期频谱估计随信号随时间变化的分布

另请参阅此处可能相关的答案:https://stackoverflow.com/a/12085728/651951

编辑/更新

对于间隔不均匀的数据,您需要考虑Non-Uniform DFT(和非均匀 FFT 实现)。在此处查看相关问题/答案https://scicomp.stackexchange.com/q/593

NFFT 或 NUFFT 的主要方法是基于通过局部卷积/插值创建统一网格,在此基础上运行 FFT 并撤消插值滤波器的卷积效果。

您可以阅读更多:

对于实现(带有 MATLAB 接口)尝试NFFT 和可能的并行版本PNFFT。您可能会找到有关如何设置和使用 here 的不错的演练。

【讨论】:

  • 嗨,我确实想获得信号的全局频谱并找出它的频率。因此,STFT 似乎不合适,因为我只能在短时间内获得频率。我唯一的问题是,我无法识别频率,因为我的数据点的采样不均等。你知道我的意思吗?
  • @Vladimir S. 我的错,我以为你对暂时本地化 FT 感兴趣。更新了我的答案以反映您对原始问题和 NFFT 的一些想法。谢谢!
【解决方案2】:

您可以对样本点进行重新采样或插值,以获得在 t 中等距分布的另一组样本点。第二组等距采样点的所选间距或采样率将允许您推断第二组 FFT 结果的频率。

除非将初始数据集的带宽限制到足够低的频率以允许插值,否则结果可能有噪声或包含混叠。如果带宽有限,那么您可以尝试使用三次样条作为插值方法。

虽然看起来可以通过对大量数据点重新采样来获得较高的 FFT bin 频率分辨率,但实际有用的分辨率精度将更多地与原始样本数相关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-28
    • 2020-01-13
    • 2016-01-14
    • 1970-01-01
    • 1970-01-01
    • 2016-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多