頻譜分析之FFT


參考:http://blog.sina.com.cn/s/blog_a07f4fe301013gj3.html

FFT是離散傅立葉變換的快速算法,可以將一個信號變換到頻域。有些信號在時域上是很難看出什么特征的,但是如果變換到頻域之后,就很容易看出特征了。這就是很多信號分析采用FFT變換的原因。

頻率是表征數據變化劇烈程度的指標,是數據在平面空間上的梯度.從物理效果看,傅立葉變換是將圖像從空間域轉換到頻率域.現在就根據實際經驗來說說FFT結果的具體物理意義。一個模擬信號,經過ADC采樣之后,就變成了數字信號。采樣定理告訴我們,采樣頻率要大於信號頻率的兩倍。 采樣得到的數字信號,就可以做FFT變換了。N個采樣點,經過FFT之后,就可以得到N個點的FFT結果。為了方便進行FFT運算,通常N取2的整數次方。

傅立葉變換后的頻譜圖,也叫功率圖或幅頻圖.除了中心以外還存在以某一點為中心,對稱分布的亮點集合,這個集合就是干擾噪音產生的,這時可以很直觀的通過在該位置放置帶阻濾波器消除干擾。

假設采樣頻率為Fs,信號頻率F,采樣點數為N.那么FFT之后結果就是一個為N點的復數。每一個點就對應着一個頻率點。這個點的模值,就是該頻率值下的幅度特性。 Fn所能分辨到的最小頻率為Fs/N.如果要提高頻率分辨力,則必須增加采樣點數,也即采樣時間。頻率分辨率和采樣時間是倒數關系。

假設FFT之后某點n用復數a+bi表示,那么這個復數的模就是An=根號a*a+b*b,相位就是Pn=atan2(b,a)。根據以上的結果,就可以計算出n點(n≠1,且n<=N/2)對應的信號的表達式為:An/(N/2)*cos(2*pi*Fn*t+Pn),即2*An/N*cos(2*pi*Fn*t+Pn)。對於n=1點的信號,是直流分量,幅度即為A1/N。由於FFT結果的對稱性,通常我們只使用前半部分的結果,即小於采樣頻率一半的結果。

PS:

如果像例子中那樣對比數據,首要條件是知道信號的數學模型,提取相應頻率,與頻譜圖對比確認是否分析正確.

頻率圖更像是一種參考標准,相比時域數據,在頻域更能分析信號強度或噪聲信息, 再據此選擇相應方法進行濾波.

matlab實現如下:

 1 data=xlsread('mov_ang_v.xlsx');
 2 data_single=data(:,3);
 3 N=length(data_single);%數據長度
 4 fs=100;%設定采樣頻率
 5 i=0:N-1;
 6 y=fft(data_single,N);%進行fft變換
 7 mag=abs(y);%求幅值
 8 f=(0:N-1)*fs/N;
 9 power=mag.^2;
10 figure
11 plot(f,power,'*');%semilogx(f,power);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM