2014-03-05 78 views
0

的正確情節我有譜的情節問題,我有我運行fft功能,並嘗試繪圖其頻譜的音頻文件:不能得到FFT

fileName = 'stuff.wav' ; 
[y, Fs] = audioread(fileName); 
Y = fft(y(:,1)); 
Y = Y/length(y); 
plot(fftshift(abs(Y)); 

和這裏是我得到的:audio spectrum

幅度是正確的,但頻率不是。

所以我寫了一個小腳本來測試這一點:

fs =8000; 
t = 0:1/fs:10; 
x = 3*sin(2*pi*5*t); 
U = abs(fft(x)); 
stem(t,fftshift(U)); 
axis([-20 20 -5 5]); 

,其結果是:

sin爲什麼峯在正確的地方意味着5,但我excpecting的第二個在-5 負頻率爲什麼我可以看到它,以及如何正確縮放X軸? 感謝您的幫助!

回答

3

您正在繪製FFT結果(U)與時間,這沒有多大意義。首先產生頻率軸上的值,然後使用繪圖U時:

%// Same as in your code: 
fs = 8000; 
t = 0:1/fs:10; 
x = 3*sin(2*pi*5*t); 
U = abs(fft(x)); 

%// Do the following changes to your code: 
f = -fs/2:fs/(numel(t)-1):fs/2; %// frequency axis 
stem(f, fftshift(U)); %// plot U versus frequency 
axis([-10 10 0 15e4]); %// zoom in to see -5 Hz and 5 Hz values 

enter image description here

+0

感謝你回答,但是當我嘗試它的音頻文件的結果不會使真正意義上說,在至少當我將其與大膽結果進行比較時 – Engine

+1

@Engine那麼,用於5 Hz信號的方法應該適用於任何音頻文件... –