ที่จริงการทำ Fourier Transform ใน MATLAB นั้นง่ายมาก แค่ใช้คำสั่ง fft ก็จบ แต่ส่วนใหญ่เท่าที่ทำ FFT มา จะมีปัญหาตลอดกับการทำ x-, y-axis ทำทีไร ลืมทุกที เพราะงั้น ก็จะมาจดโน๊ตไว้ ณ ที่นี้กันลืมแล้วกัน
ยกตัวอย่างง่ายๆ อย่างแรก เช่นการทำ Fourier transform ของ sine function
1. สร้างฟังชั่นตัวอย่างขึ้นมาก่อน
Fs = 1000; % Sampling frequency T = 1/Fs; % Sampling period L = 1000; % Length of signal t = linspace(0,(L-1)*T,L); % Time vector f = 5; % sine wave frequency S = sin(2*pi*f*t); plot(t,S); axis tight; xlabel('time (s)'); ylabel('amplitude');
Y = fft(S); plot(abs(Y),'-b','LineWidth',2); axis tight;
yaxis = fft(S./L); plot(abs(yaxis),'-b','LineWidth',2); axis tight;
NFFT = L; xaxis = Fs/2*linspace(0,1,NFFT/2+1); plot(xaxis,abs(yaxis(1:L/2+1)),'-b','LineWidth',2); axis tight;
อ่อ NFFT คือจำนวนจุดที่ใช้ในการทำ fft ซึ่งบางทีอาจจะไม่เท่ากับ L ก็ได้ สมมติดังตัวอย่างต่อไปนี้
NFFT = 2^13; yaxis = fft(S./L,NFFT); xaxis = Fs/2*linspace(0,1,NFFT/2+1); plot(xaxis,abs(yaxis(1:NFFT/2+1)),'-b','LineWidth',2); axis tight;
No comments:
Post a Comment