Звуковой анализ БПФ - PullRequest
0 голосов
/ 25 июня 2018

Я хочу проанализировать звуки из машины с микрофоном, подключенным к плате DAQ, для сбора данных.Данные хранятся в файле Excel, а затем я хочу прочитать эти данные в MATLAB и выполнить БПФ, чтобы увидеть, какие частоты вызывают наибольшую амплитуду шума.Чтобы протестировать свою систему, я подал некоторые известные частоты в DAQ через генератор функций.Однако когда я передаю сигнал 400 Гц от генератора функций в DAQ, собираю данные, загружаю их в MATLAB и отображаю их на графике, я не вижу никаких тонов при 400 Гц, только некоторые на более высоких частотах.Это проблема с моим кодом?

y = xlsread('TrialExcel400HzOscilloscope.xlsx');      
y = detrend(y);
n = length(y);

Fs = 48000;                 
nfft = 4096;                
Ts = 1/Fs;                  
t = 0:Ts:(n*Ts)-Ts;        

numUniq = ceil((nfft+1)/2); 
f = (0:numUniq-1)'*Fs/nfft; 



figure(1)                   
hAx(1) = subplot(211);
hLine(1) = line('XData',t,'YData',nan(size(t)), 'Color','b', 'Parent', hAx(1));
xlim([0 0.05]);            
ylim([-10 10]);              
xlabel('Time (s)');
ylabel('Amplitude (Volts)');
title('Time Domain');

hAx(2) = subplot(212);
hLine(2) = line('XData', f, 'YData', nan(size(f)), 'Color', 'b', 'Parent', hAx(2));
grid
xlim([0 25000]);           
ylim([0 80]);               
xlabel('Frequency (Hz)');
ylabel('Magnitude (dB)');
title('Frequency Domain');

a = 20*log10(abs(fft(y,nfft)));                                   


set(hLine(1), 'YData',y);                                              
set(hLine(2), 'YData', a(1:numUniq));      

output graph of 400Hz function generator tone

1 Ответ

0 голосов
/ 25 июня 2018

«Я подал некоторые известные частоты в DAQ через генератор функций» - Тогда он работал нормально для других частот?

Пики, которые вы видите, могут быть шумом в DAG или проблемой сгенератор частоты.

Учитывая, что ваш сигнал чуть менее 0,1 секунды, я ожидаю увидеть около 40 периодов синусоидальной волны в нем (на самом деле, поскольку вы строите график только 0,05 с, это будет ровно 20 периодов в вашемграфик).Это явно не тот случай с этим сигналом.

Ваш код для вычисления и построения графика спектра в порядке.

...