Вычислите элементы разрешения по частоте аудиосигнала

Я делаю fft (stft) над аудио-файлом, который содержит голос и музыку. Я взял из сигнала диапазон 1-200, который сохранил в переменной с именем, например, Frequency_band1. Как я могу вычислить частотные интервалы из переменной, в которой хранится мой специально выбранный сигнал, к которому ранее применялось БПФ? Я думаю, где-то читал, что мне нужно было вычислить fs/fftpoints. В моем случае 44100/4096. Умножить ли его на мою переменную frequency_band1*(44100/4096)? Это делается на Matlab, и мне нужно сделать это с помощью stft.


person CidelFastro    schedule 26.01.2017    source источник
comment
Выходные значения ДПФ (БПФ) находятся на частотах [0:n-1]/n*fs, где n — размер ДПФ, а fs — частота дискретизации.   -  person Luis Mendo    schedule 27.01.2017
comment
@Lusi Mendo, с n, вы имеете в виду точки fft? Я не совсем уверен, так как я новичок в Matlab. Как это связано с моим вопросом, если бы вы могли просветить меня, я был бы очень признателен.   -  person CidelFastro    schedule 27.01.2017
comment
Я включил ответ с примером   -  person Luis Mendo    schedule 27.01.2017
comment
@Luis Mendo Хорошо, спасибо, теперь я понял. Последний вопрос, извините за назойливость, но означает ли numel количество элементов синусоиды, чтобы вы могли создать вектор частоты?   -  person CidelFastro    schedule 27.01.2017
comment
Да, numel размер вектора x. На самом деле вы должны использовать размер вывода fft, если он отличается от размера ввода (то есть, если вы используете второй аргумент для fft). я отредактировал это   -  person Luis Mendo    schedule 27.01.2017
comment
@ Луис Мендо, хорошо, большое спасибо за помощь!   -  person CidelFastro    schedule 27.01.2017
comment
Рад, что смог помочь!   -  person Luis Mendo    schedule 27.01.2017


Ответы (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