www.pudn.com > voiceprocessingtoolbox.rar > fft01.m
% 此範例展示一個簡單正弦波的傅立葉轉換,以雙邊頻譜來顯示
% 此正弦波的頻率恰巧是 freqStep 的整數倍,所以雙邊頻譜應該只有兩個非零點
N = 256; % 點數
fs = 8000; % 取樣頻率
freqStep = fs/N; % 頻域的頻率的解析度
f = 10*freqStep; % 正弦波的頻率,恰是 freqStep 的整數倍
time = (0:N-1)/fs; % 時域的時間刻度
y = cos(2*pi*f*time); % Signal to analyze
Y = fft(y); % Spectrum
Y = fftshift(Y); % 將頻率軸的零點置中
% Plot time data
subplot(3,1,1);
plot(time, y, '.-');
title('Sinusoidal signals');
xlabel('Time (seconds)'); ylabel('Amplitude');
axis tight
% Plot spectral magnitude
freq = freqStep*(-N/2:N/2-1); % 頻域的頻率刻度
subplot(3,1,2);
plot(freq, abs(Y), '.-b'); grid on
xlabel('Frequency)');
ylabel('Magnitude (Linear)');
% Plot phase
subplot(3,1,3);
plot(freq, angle(Y), '.-b'); grid on
xlabel('Frequency)');
ylabel('Phase (Radian)');