Я делаю fft (stft) над аудио-файлом, который содержит голос и музыку. Я взял из сигнала диапазон 1-200, который сохранил в переменной с именем, например, Frequency_band1. Как я могу вычислить частотные интервалы из переменной, в которой хранится мой специально выбранный сигнал, к которому ранее применялось БПФ? Я думаю, где-то читал, что мне нужно было вычислить fs/fftpoints. В моем случае 44100/4096. Умножить ли его на мою переменную frequency_band1*(44100/4096)? Это делается на Matlab, и мне нужно сделать это с помощью stft.
Вычислите элементы разрешения по частоте аудиосигнала
Ответы (1)
Выходные значения ДПФ (БПФ) находятся на частотах (0:n-1)/n*fs
, где n
— размер ДПФ, а fs
— частота дискретизации.
Вот пример. Это создает синусоиду на известной частоте, выполняет ДПФ всего сигнала (так что 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
(Гц).
person
Luis Mendo
schedule
26.01.2017
[0:n-1]/n*fs
, гдеn
— размер ДПФ, аfs
— частота дискретизации. - person Luis Mendo   schedule 27.01.2017numel
размер вектораx
. На самом деле вы должны использовать размер выводаfft
, если он отличается от размера ввода (то есть, если вы используете второй аргумент дляfft
). я отредактировал это - person Luis Mendo   schedule 27.01.2017