让我们假设,
我有一个矢量t,其中包含样本的秒数。 (这些样本不是在时域上平均分配的。
此外,我还有一个包含时间t的样本值的矢量数据。
t且数据长度相同。
如果我绘制图形,可以获得某种周期性信号。
现在我可以执行:abs(fft(data))来获取我的光谱,然后将其绘制在x轴上的数据点数量上。
如何获得关于向量t中的时间的谱图并绘制它? 我希望看到1 / s中的哪些频率或信号中包含的时间段。
感谢您的帮助。
答案 0 :(得分:4)
[不是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的很好的演练。
答案 1 :(得分:2)
您可以对采样点进行重新采样或插值,以获得另一组在t中间隔相等的采样点。选择的第二组等间距采样点的间隔或采样率将允许您将频率推断到第二组的FFT结果。
结果可能有噪声或包含混叠,除非初始数据集被限制到足够低的频率以允许插值。如果是bandlimited,那么你可以尝试使用三次样条作为插值方法。
尽管通过重新采样到更大数量的数据点可能看起来可以获得高FFT bin频率分辨率,但实际有用的分辨率精度将与原始样本数量更相关。