標籤:

matlab之快速傅里葉變換(fft)

matlab之快速傅里葉變換(fft)

來自專欄 WITH:matlab&simulink6 人贊了文章

matlab幫助文檔-fft(快速傅里葉變換)

fft語法為:

  • Y = fft(X)
  • Y = fft(X,n)
  • Y = fft(X,n,dim)

解釋:

Y = fft(X) ,返回 X的離散傅里葉變換(DFT)

  • 若X為列向量,對該列向量做DFT。
  • 若X為矩陣,對X的每一列分別做DFT。
  • 若X為多維數組,對X的每一頁的每一列分別做DFT。

---------------------------------------------------------------------------------------------------------------

Y = fft(X,n) ,若X點的個數少於n,則在後面加0,湊到n。若X的點的個數多於n,則刪除多餘的數。其餘與上相同。

---------------------------------------------------------------------------------------------------------------

Y = fft(X,n,dim) ,若dim=1,則按照列向量進行DFT。若dim=2,則按照行向量進行DFT。若dim>2,也可以計算,但是還不知是什麼~

---------------------------------------------------------------------------------------------------------------

例子:

計算波形的頻率、幅值、相位分量。

原始函數為:S = 0.7*sin(2*pi*50*t+pi/4) + sin(2*pi*120*t-pi/2)

利用fft計算其中的 頻率、幅值、相位。

clear;clcFs = 1000; % 採樣頻率T = 1/Fs; % 採樣周期L = 1000; % 信號長度 由此知,頻率解析度為 1hzt = (0:L-1)*T; % 時間相量S = 0.7*sin(2*pi*50*t+pi/4) + sin(2*pi*150*t-pi/2); % 原始函數Y = fft(S);P2 = abs(Y/L); % 每個量除以數列長度 LP1 = P2(1:L/2+1); % 取交流部分P1(2:end-1) = 2*P1(2:end-1); % 交流部分模值乘以2f = Fs*(0:(L/2))/L;plot(f,P1)title(Single-Sided Amplitude Spectrum of S(t))xlabel(f (Hz))ylabel(|P1(f)|)f1=Y(1:L/2+1);f1=atan2(imag(f1),real(f1))+pi/2;%需要將fft的結果加上pi/2才是真實的值,實驗出來的,原理未明。theta = [f1(51) f1(151)]%結果為弧度制-------------------------計算結果---------------------------------------theta = 0.7854 4.7124(減去2pi,則為-pi/2

相關答案:

離散傅里葉變換(DFT) - 陳三兒 - 博客頻道 - CSDN.NET

推薦閱讀:

用matlab實現樂曲演奏的難度?在網上聽到一首用matlab編寫的卡農,求分析一下實現及難度所在?
從平面圖表中提取數據的軟體?
四旋翼可不可以用地面站(PC機)來實現姿態結算和控制,機載處理器只做讀數據和收發數據用?
完全沒辦法看內置函數的源代碼了嗎?
大家都用matlab做過哪些有趣的事兒?

TAG:MATLAB |