130 likes | 1.65k Views
MATLAB 使用教學 (11). 自 動 控 制. 教授 : 張 仁 宗 教授 助教 : 蘇振山、吳 政 達、賴禹亨. 目錄. 前言 建立欲分析的訊號 對訊號進行傅立葉轉換 問題與討論 隨堂練習. 前言. 欲對一筆離散資料進行頻域分析時,快速傅立葉轉換 (Fast Fourier Transform, FFT) 是經常使用到的工具。在 MATLAB 中,也提供了這樣的功能;下面簡單的用一個例子來說明如何在 MATLAB 中使用 FFT 的工具。. Step 1: 建立欲分析的訊號 (1).
E N D
MATLAB 使用教學(11) 自 動 控 制 教授: 張 仁 宗 教授 助教: 蘇振山、吳 政 達、賴禹亨
目錄 • 前言 • 建立欲分析的訊號 • 對訊號進行傅立葉轉換 • 問題與討論 • 隨堂練習
前言 欲對一筆離散資料進行頻域分析時,快速傅立葉轉換(Fast Fourier Transform, FFT)是經常使用到的工具。在MATLAB中,也提供了這樣的功能;下面簡單的用一個例子來說明如何在MATLAB中使用FFT的工具。
Step 1: 建立欲分析的訊號(1) 在此範例中,以兩個相加弦波為做為測試的離散訊號y,其頻率分別為25 Hz與200 Hz,振幅分別為1.5與2.0。此離散訊號的取樣頻率為1 KHz、取樣點數為1000點。建立此訊號的程式如下: Fs = 1000; % 取樣頻率 T =1/Fs; % 取樣間隔時間 L = 1000; % 訊號取樣點數 t = (0:L-1)*T; % 時間向量 y=1.5*sin(2*pi*25*t)+2.0*sin(2*pi*200*t) ;
Step 2:對訊號進行傅立葉轉換(1) Y=fft(y,L)/L; %對y進行FFT轉換得到Y f=Fs*linspace(0,1,L); %建立頻譜圖中之頻率軸 subplot(2,1,1) plot(f,abs(Y(1:L))) %繪出Y之振幅圖 title(‘Amplitude spectrum of y(t)’) xlabel(‘Frequency(Hz)’) ylabel(‘|Y(f)|’)
Step 2:對訊號進行傅立葉轉換(2) 對y進行快速傅立葉轉換後,其頻譜會從L/2處呈現對稱的形式,因此只需顯示0~500Hz的頻譜,而另一邊之振幅必須對稱於L/2疊合置前半段,如此一來即可顯示訊號中的頻率訊息。 subplot(2,1,2) plot(f(1:L/2),2*abs(Y(1:L/2))) title(‘Amplitude spectrum of y(t)’) xlabel(‘Frequency(Hz)’) ylabel(‘|Y(f)|’)
問題與討論 從頻譜圖中,可以觀察到在25Hz與200Hz處,振幅分別為1.5以及2.0,與測試訊號帶有的弦波頻率以及強度相符。至於頻譜中相位的部分,直接顯示的結果並不可靠。 P.S. 利用快速傅立葉轉換求離散訊號的頻譜時,能夠分析的最高頻率為取樣頻率/2;超過此頻率,頻譜中將會產生重疊 (aliasing)現象,造成判讀的困難。 參考資料: MATLAB Help、維基百科。
隨堂練習 試求出y之頻譜,其中: t=0:0.01:10; f1=2*pi*50; f2=2*pi*100; y=10+10sin(f1t)+15sin(f2t)
謝謝各位同學 光機電實驗室12F 研究室91C09 分機:62262