频率仓索引可以是十进制数吗?
Can frequency bin index be decimal number?
我正在使用公式
计算频点索引 k
k = f_k * N / Fs + 1,
其中采样率为Fs
,FFT中的样本数为N
,则Matlab索引为k
的bin的频率为f_k
。但是我知道 k
是十进制数,它必须是整数,因为我稍后将它用作傅立叶变换级数的索引。我不知道该怎么办?
每个 bin 代表一个 范围 的频率(每个 bin 的宽度为 Fs / N
)。与您感兴趣的频率对应的 bin 是 round(f_k * N / Fs)
(+ 1
,如果您使用 MATLAB 的基于 1 的索引),即这是您的大部分信号能量出现的地方,尽管会有一些由于 spectral leakage (you should of course use a window function 将其最小化),相邻 bin 中的能量也是如此。
延伸阅读:How do I obtain the frequencies of each value in an FFT?.
您需要做的就是使用 round 将 k 转换为整数。
您将不得不重新计算其他变量,以便它们调整为 k 的整数值。我不明白这怎么会打扰你。
无论如何,数字信号处理都是基于大量的近似。
希望对您有所帮助
我正在使用公式
计算频点索引k
k = f_k * N / Fs + 1,
其中采样率为Fs
,FFT中的样本数为N
,则Matlab索引为k
的bin的频率为f_k
。但是我知道 k
是十进制数,它必须是整数,因为我稍后将它用作傅立叶变换级数的索引。我不知道该怎么办?
每个 bin 代表一个 范围 的频率(每个 bin 的宽度为 Fs / N
)。与您感兴趣的频率对应的 bin 是 round(f_k * N / Fs)
(+ 1
,如果您使用 MATLAB 的基于 1 的索引),即这是您的大部分信号能量出现的地方,尽管会有一些由于 spectral leakage (you should of course use a window function 将其最小化),相邻 bin 中的能量也是如此。
延伸阅读:How do I obtain the frequencies of each value in an FFT?.
您需要做的就是使用 round 将 k 转换为整数。 您将不得不重新计算其他变量,以便它们调整为 k 的整数值。我不明白这怎么会打扰你。
无论如何,数字信号处理都是基于大量的近似。
希望对您有所帮助