我正在使用公式
计算频率仓索引k
k = f_k * N / Fs + 1,
如果采样率为Fs
,则FFT中的采样数为N
,则具有Matlab索引k
的bin的频率为f_k
。但我得到k
是十进制数,它需要是整数,因为我后来使用它像傅立叶变换序列的索引。我不知道该怎么办?
答案 0 :(得分:2)
每个bin表示频率的范围(每个bin的宽度为Fs / N
)。对应于您感兴趣的频率的bin是round(f_k * N / Fs)
(+ 1
,如果你使用MATLAB的基于1的索引),即这是你的大部分信号能量出现的地方,尽管会有一些由于spectral leakage,相邻分档中的能量也是如此(你当然应该使用window function来最小化这个能量。)
进一步阅读:How do I obtain the frequencies of each value in an FFT?。
答案 1 :(得分:0)
您需要做的就是使用round将k转换为整数。 您将不得不重新计算其他变量,以便调整为k的整数值。我不明白这怎么会打扰你太多。
无论如何,数字信号处理都基于很多近似值。
希望有所帮助