计算音频信号的频率区间

Calculate frequency bins of an audiosignal

我正在对包含语音和音乐的音频文件执行 fft (stft)。我从信号中取出了 1-200 的范围,我将其保存在一个名为 frequency_band1 的变量中。我如何 从变量 计算频率仓,它存储我特别选择的信号,之前应用了 fft。我想,在某处阅读,我需要计算 fs/fftpoints。在我的例子中,44100/4096。我是否将它与我的变量 frequency_band1*(44100/4096) 相乘?这是在 matlab 上完成的,我需要用 stft 来完成。

DFT (FFT) 的输出值频率为 (0:n-1)/n*fs,其中 n 是 DFT 大小,fs 是采样频率。

这是一个例子。这将创建一个已知频率的正弦波,对整个信号执行 DFT(因此 n 是信号大小),并使用上述频率值绘制频谱。

fs = 44100; % sample frequency
t = 0:1/fs:.1; % 0.1-second time axis
x = sin(2*pi*300*t); % sinusoid of frequency 220 Hz
X = fft(x); % DFT of x
f = (0:numel(X)-1)/numel(X)*fs; % frequency axis of DFT
plot(f, abs(X)) % plot the spectrum in absolute value
grid % add grid
axis([0 1000 -500 2500])

您可以检查此信号的谱线是否在其应有的位置,即 300 (Hz)。