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*(0L/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 |