Как я могу определить амплитуду БПФ на сигнале во временной области

У меня есть сигнал волновой песни и проблема с амплитудами.

%graph 1 time domain
song2 = song(1:size(song));
fs = 44100;
dt = 1/fs;
t = 0:dt:(length(song2)*dt)-dt;
figure(); 
plot(t,abs(song2)); xlabel('Seconds'); ylabel('Amplitude');

Затем я помещаю сигнал в БПФ, потому что хочу получить амплитуду обнаруживаемых пиков (например, 164 Гц).

%graph 2 fft
L = length(song2); 
NFFT = 2^nextpow2(L);
f = fs/2*linspace(0,1,NFFT/2+1);
X = fft(song2,NFFT)/L; 
X = 2*abs(X(1:NFFT/2+1)); 
figure(); 
plot(f,X);  

Проблема возникает, когда я получаю амплитуду сигнала (например, 0,0103), но если я сравниваю с амплитудой (временной области), это не то же самое.

Мой вопрос: как во временной области (график 1) я обнаруживаю амплитуду частоты (например, 164 с амплитудой 0,0103)?

РЕДАКТИРОВАТЬ:

Хм, я лучше спрошу так. Я обнаруживаю частоту в спектре частотной области как график link. Например, возьмем первую signal (82hz) (амплитуда: 0,0075) И мой вопрос, возможно ли определить положение этого первого сигнала во временной области как график в ссылка

Любая помощь будет полезна.


person Cvak    schedule 05.11.2014    source источник


Ответы (2)


Вы пробовали код с синусоидальным входом?

Составьте синусоиду длиной 512 (любой разумной длины) с амплитудой 1 и частотой, равной 164 Гц.

Когда вы запустите программу, я уверен, что вы увидите усиление в интервале частот, соответствующем 164 Гц, близко к единице, если ваше разрешение по частоте не так уж плохо (то есть вы не использовали слишком мало точек БПФ. ).

Если все вышеперечисленное работает, то ваш код должен работать и для песни. Я не знаю, как вы оцениваете / проверяете амплитуду во временной области в случае многотонального сигнала во временной области, такого как музыка.

person Akshay Rao    schedule 05.11.2014
comment
Привет. Tnx за ответ. Я получаю интервал из частотной области, но мне было интересно, как определить этот интервал во временной области. Посмотрите, пожалуйста, на мой верхний вопрос (я добавляю графики). - person Cvak; 06.11.2014
comment
Вы не можете обнаружить корзину во временной области. Вам следует потратить некоторое время на понимание того, что такое частотное представление сигнала во временной области. - person Akshay Rao; 06.11.2014
comment
Синусоида может быть x (t) = A cos (2π f t + ϕ). Сигнал временной области может быть разложен на множество синусоид разные значения A, f и ϕ. Пик на графике преобразования Фурье говорит вам, что один из составляющих сигналов входного сигнала временной области имеет частоту, соответствующую этому бину, и имеет амплитуду, соответствующую высоте пика. Итак, пик в частотной области соответствует волне во временной области. Таким образом, вы не можете обнаружить синусоиду, пытаясь найти пики в сигнале во временной области. - person Akshay Rao; 06.11.2014

Если я правильно понимаю ваш вопрос, вы можете найти то, что хотите, взяв внутренний продукт сигнала временной области со сложной синусоидой на интересующей частоте. Например, используя информацию из вашего сообщения, мы хотели бы примерно следующее:

% graph 1 time domain
song2 = song(1:size(song));
fs = 44100;
dt = 1/fs;
t = 0:dt:(length(song2)*dt)-dt;
x_164 = exp(-1j * 2*pi * 164 * t);
f_164 = x_164(:).' * song2(:);       % Spectral content of the signal at 164(Hz).

Если вы подумаете о том, что такое ДПФ, вы увидите, что это просто описанный выше процесс, но с частотами, выбранными так, что они основаны на ортогональной основе. Однако вы можете использовать тот же процесс для оценки спектрального содержания на любой желаемой частоте.

person AnonSubmitter85    schedule 05.11.2014
comment
Хм, я лучше спрошу так. Я определяю частоту в спектре частотной области как график (ссылка) kmetija-tonkli.si/tmp/freqbeans .png Например, возьмем первый сигнал (82 Гц) (амплитуда: 0,0075). И мой вопрос, возможно ли определить положение этого первого сигнала во временной области (как график в ссылке) kmetija-tonkli.si/tmp/timedomain.png - person Cvak; 06.11.2014
comment
Позицию во времени трудно получить от традиционного FT. В общем, когда вы берете FT, вы жертвуете информацией о местоположении ради информации о частоте. В идеальном мире без шума вы можете оценить длительность сигнала по ширине его частотного пика, а затем его местоположение по величине линейной фазы, которую он имеет. Однако с практической точки зрения это редко, если вообще возможно. Чтобы сделать то, что вы хотите сделать, вам нужно начать смотреть на преобразования время-частота, которые будут пытаться обеспечить баланс между местоположением и частотой. Самый простой - это кратковременное преобразование Фурье. - person AnonSubmitter85; 06.11.2014