3

让我们假设,

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

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

  • t 和 data 具有相同的长度。

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

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

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

谢谢你的帮助。

4

2 回答 2

4

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

您可以做的是使用频谱图并获得短时傅里叶变换(STFT)。这将为您提供NxM时间频率 FT 值的离散网格(N:FT 频率区间,M:信号时间窗口)。

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

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

编辑/更新

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

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

你可以阅读更多:

对于实现(与 MATLAB 的接口),请尝试NFFT以及可能的并行版本PNFFT您可以在此处找到有关如何设置和使用的不错的演练。

于 2012-11-22T20:59:27.427 回答
2

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

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

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

于 2012-11-24T17:12:32.397 回答