2013-11-10 3 views
1

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

код, который я использую (в значительной степени заимствованы из mathsworks FFT примера) является:

y=x(100:200); 
Fs = 10000;     % Sampling frequency      
numsamples = 20000;      % Number of samples in the signal    
NFFT = 2^nextpow2(numsamples); % Next power of 2 from length of y 
Y = fft(y,NFFT)/numsamples; 
f = Fs/2*linspace(0,1,NFFT/2+1); 

plot(f,2*abs(Y(1:NFFT/2+1))) 

И вот один из графиков, которые она производила: speech graph

Я не знаю, если это правильно или нет, но это не похоже на примеры, которые я видел ....

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

+0

я бы посоветовал вам посмотреть на fftshift HTTP://www.mathworks.com/help/matlab/ref/fftshift.html и полулогия http://www.mathworks.com/help/matlab/ref/semilogy.html – mhmsa

ответ

1

Я думаю, что ось X верна.

Для получения логарифмической оси Y заменить plot на semilogy:

semilogy(f,2*abs(Y(1:NFFT/2+1))) 

или равноценно использовать plot, как он стоит с последующим

set(gca,'YScale','log') 
Смежные вопросы