做OFDM通信少不了頻譜分析,基帶信號(hào)DA后的頻譜,以及基帶數(shù)字上變頻后的DA信號(hào)都要頻譜分析。我覺得實(shí)做任何工程都是這樣,先規(guī)定實(shí)施方案,然后仿真成功,再實(shí)際開發(fā),不過(guò)也可以一邊開發(fā),一邊仿真,開發(fā)結(jié)果要與仿真預(yù)期結(jié)果一致。
所以分析與仿真工具M(jìn)ATLAB就很重要了,既可以仿真,又可以通過(guò)示波器或其他方法把實(shí)際信號(hào)采下來(lái)分析。
matlab使用FFT函數(shù)分析信號(hào)頻譜
一般我使用的FFT分析頻譜流程如下:


其中有3個(gè)注意的點(diǎn):
1.FFT的結(jié)果看的是頻譜,所以怎么把橫坐標(biāo)的值從原來(lái)的FFT點(diǎn)數(shù)0:N-1轉(zhuǎn)換為頻率值呢?
首先要引出頻譜分辨率的概念,即分辨兩個(gè)不同頻率信號(hào)的最小間隔,F(xiàn)FT結(jié)果相鄰點(diǎn)間的間隔
。因?yàn)镹點(diǎn)FFT對(duì)應(yīng)采樣率為fs的序列,其頻率分辨率為
,其中Ts為采樣周期,T為整個(gè)序列的時(shí)間長(zhǎng)度。有關(guān)頻率分辨率的就不多說(shuō)了。所以我們橫坐標(biāo)轉(zhuǎn)換為:f = (0:length(y)-1)*Fs/length(y);
2.直接FFT的結(jié)果里怎么有多余的信號(hào)頻率(鏡像頻率)圖2?
DFT具有對(duì)稱性,因?yàn)槠涫侵芷谛蛄蠨FS在一個(gè)周期內(nèi)的點(diǎn),時(shí)域序列是有限長(zhǎng)實(shí)序列,DFT的結(jié)果的實(shí)部周期偶對(duì)稱,虛部周期奇對(duì)稱,也就是模值周期偶對(duì)稱,相位周期奇對(duì)稱。其實(shí)從奈奎斯特定律也可以看出,fs>=2f,fs的采樣率最多也就顯示fs/2的真實(shí)頻率(感性理解哈哈)。
所以程序處理方式就是周期延拓后取-N/2:N/2-1.用到函數(shù)fftshift(),結(jié)果如圖3.如注釋所述:
%該變換還會(huì)生成尖峰的鏡像副本,該副本對(duì)應(yīng)于信號(hào)的負(fù)頻率。
%為了更好地以可視化方式呈現(xiàn)周期性,可以使用 fftshift 函數(shù)對(duì)變換執(zhí)行以零為中心的循環(huán)平移。
其實(shí)這和設(shè)計(jì)數(shù)字濾波器IIR與FIR也一樣,采樣率為fs的信號(hào),設(shè)計(jì)的濾波器的通帶阻代也限制在0-fs/2內(nèi)。
3.程序中的信號(hào)幅度值都是1,500點(diǎn)的FFT畫出來(lái)的幅度值怎么變成了250,應(yīng)該是1吧?
是的,應(yīng)該是1。所以怎么變換為1呢,注意到FFT的結(jié)果是偶對(duì)稱的,且其反應(yīng)的真實(shí)頻譜是0-fs/2。所以需要的操作是直接取0-N/2的FFT結(jié)果,乘以2,然后除以N。即2*abs(y(1:N/2+1))/N,在上面的程序下接著寫:
注意到要除以N,也就是FFT的長(zhǎng)度,為什么除以N,這個(gè)有很多說(shuō)法,我自己理性理解的也不透徹,所以這里就不解釋了自行百度(我只能結(jié)合本例子感性理解哈哈)。

結(jié)果如圖4,可見橫坐標(biāo)頻率是0-25,縱坐標(biāo)信號(hào)的幅度為1.
然而,有不少人(包括我)平時(shí)分析信號(hào)都是直接FFT畫頻譜:圖2,且看幅值都是看相對(duì)的大小,或者有沒有頻率分量,就很少做圖3與圖4的變換。但是我不知道其中的緣由,今天終于明白了。
圖4 FFT所反映的真正的頻譜幅值
參考資料
[1]傅里葉變換 - MATLAB & Simulink - MathWorks 中國(guó)
[2]快速傅里葉變換- MATLAB fft - MathWorks 中國(guó)