在Matlab fft可能的细节错误吗?

5视图(30天)
Tran Trung灾区
Tran Trung灾区 2021年3月15日
评论道: 大卫Freiman2022年2月19日
亲爱的所有,
我经常与FFT和我很喜欢FFT从Matlab函数:
然而,最近我encoutered与当前的Matlab实现可能的问题:
在标准计算频率轴,我从上面的链接:
f = f * (0: (L / 2)) / L;
Fs是采样频率和L的长度的信号,似乎频率阶跃(连续两个频率之间的距离在频率轴)是Fs / L。这通常不是一个问题如果L是足够大的,例如在这个例子中。然而,当我处理小L,例如L = 5,然后我意识到的频率不是逆步总时间窗口,理论上应该。如果我想做这个理论上完美,我不得不使用Fs / (l - 1),但这是不符合fft是如何在Matlab完成的,也就是说,我有不一致的频率峰值的位置。在我看来,fft与“完美理论考虑”没有实现。
你能建议/评论?或者你认为我错过了什么吗?
感谢和最好的问候,
Trung

答案(1)

他Purwar
他Purwar 2021年3月21日
你好,
频率分辨率被定义为Fs / L,实现和例子似乎正确的比例,按预期工作。如果你能尝试提供了计算方法和步骤,文件你有提到它将有助于更清楚地解决和理解问题。
谢谢
2的评论
大卫Freiman
大卫Freiman 2022年2月19日
嗨,李,
我最近也有类似的问题,遇到这篇文章。我认为解决这个问题在于上面描述的为一个离散时间信号,与N = 3,时间窗口 实际上3 * dt,因为每个样本点代表一个dt的时代。
在过去我有犯了一个错误的计算时间窗口当t (N) - t (1)。正如你上面指出的那样,这几乎会明显大N, 1000。然而,当最近检查一些代码与非常低的样本,N,我意识到时间窗口 应该 计算为:
T = N * dt = N / Fs
所以δF 1 / T = Fs / N
请让我知道如果你有任何问题或看到任何错误在我的逻辑。
谢谢你!
戴夫

登录置评。

标签

s manbetx 845


释放

R2019b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!