張雅希,張 琴,林 梅
(江西工業(yè)工程職業(yè)技術(shù)學(xué)院,江西 萍鄉(xiāng) 337000)
本文針對實(shí)時(shí)頻譜分析中的關(guān)鍵算法進(jìn)行分析研究。通常情況下,使用快速傅里葉變換(Fast Fourier Transform,F(xiàn)FT)算法,需在全頻帶內(nèi)進(jìn)行計(jì)算,得到的是整個(gè)采樣頻率上的全景頻譜。而在實(shí)際的工程應(yīng)用中,常常只關(guān)心某一頻帶范圍內(nèi)的局部頻譜,此時(shí)若仍使用FFT 算法,進(jìn)行的選定頻帶范圍外的計(jì)算變得多余。也就是說,F(xiàn)FT 算法在進(jìn)行局部頻譜分析時(shí)存在運(yùn)算量大、速度慢的缺點(diǎn)。目前,比較合理有效的解決方法是利用頻譜細(xì)化算法對選定的頻帶范圍進(jìn)行細(xì)化頻譜分析,在保證FFT 運(yùn)算量不變的前提下,提高信號的頻率分辨率。
常見的頻譜細(xì)化算法包括線性調(diào)頻Z 變換CZT 算法和基于復(fù)解析帶通濾波器的ZFFT 算法[1]。考慮到CZT 算法對于譜線之間干涉較嚴(yán)重時(shí)的細(xì)化效果有限,本文選擇對復(fù)解析ZFFT 頻譜細(xì)化算法進(jìn)行研究,并通過MATLAB 平臺對FFT 算法和復(fù)解析ZFFT 算法進(jìn)行仿真,驗(yàn)證頻譜細(xì)化算法的有效性。
復(fù)解析ZFFT 算法的原理如圖1 所示。在對信號進(jìn)行頻譜細(xì)化時(shí),首先通過復(fù)解析帶通濾波器濾除無關(guān)的頻率成分,而后重采樣,對抽取的信號進(jìn)行移頻和FFT 變換處理,最終得到的頻譜即為細(xì)化頻譜。
圖1 解析ZFFT 算法原理圖
設(shè)x(n)為待細(xì)化的數(shù)字信號序列,信號采樣頻率為fs,細(xì)化頻帶區(qū)間為f1~f2,細(xì)化頻帶的中心頻率為,濾波器的半階數(shù)為M且M<<ND,細(xì)化倍數(shù)設(shè)為D,F(xiàn)FT 分析點(diǎn)數(shù)為N,信號長度為ND+2M。算法具體原理流程如下。
復(fù)解析帶通濾波器的帶寬設(shè)為fs/2D。為了保證細(xì)化頻帶外的成分被完全濾除,濾波器的帶寬fs/2D應(yīng)等于細(xì)化帶寬f2-f1[2]。為平滑濾波器的過渡帶,添加漢寧窗,一般選取半階數(shù)M=4D[3]。
對信號x(n)進(jìn)行復(fù)解析帶通濾波后得到信號y(n)為
式中:h(n)為帶通濾波器的沖激響應(yīng),n=0,1,…,ND-1。濾波之后,細(xì)化頻帶f1-f2的頻譜被保留[2],其余無關(guān)頻帶的頻譜被完全濾除。
對y(n)重采樣,每隔D點(diǎn)抽取出一點(diǎn),信號采樣頻率由原來的fs降低為,信號的長度由ND降為N。重采樣后的信號g(n)為
對重采樣后的信號g(n)進(jìn)行移頻,將f1移至零頻點(diǎn)。設(shè)移頻量為ω1d:
(2) 若控制有眼/無眼性狀的基因位于常染色體上,請用上表中雜交子代果蠅為材料,設(shè)計(jì)一個(gè)雜交實(shí)驗(yàn)來確定無眼性狀的顯隱性(要求: 寫出雜交組合和預(yù)期結(jié)果)。
對移頻后的N點(diǎn)復(fù)序列g(shù)1(n)進(jìn)行FFT 處理,得到相應(yīng)的頻譜G1(k),G1(k)和X(k)的關(guān)系為
式中:l1為帶通濾波時(shí)f1在Y(k)中對應(yīng)譜線的位置,因?yàn)镸<<ND,l1也可近似認(rèn)為是f1在X(k)中的對應(yīng)譜線的位置。
對G1(k)和X(k)的表達(dá)式進(jìn)行變換后可得到:
此時(shí)頻譜的頻率分辨率為Δf′=fs/ND,用N/2條譜線即可表示出信號選定頻帶的細(xì)化譜。
對于采用FFT 算法得到的頻譜,其頻率分辨率Δf=fs/N。如果使用FFT 算法,對長度為ND+2M的序列x(n)進(jìn)行分析,對應(yīng)的頻率分辨率為Δf=fs/(ND+2M);使用復(fù)解析ZFFT 算法對同樣的x(n)進(jìn)行分析,對應(yīng)的頻率分辨率為Δf′=fs/ND。因M<<ND,可以近似認(rèn)為這兩種算法分析得到的頻譜頻率分辨率相等,但前者需進(jìn)行ND點(diǎn)的FFT 運(yùn)算,而后者只需進(jìn)行N點(diǎn)的FFT 運(yùn)算。即復(fù)解析ZFFT 算法在保證頻率分辨率的同時(shí),減小了FFT運(yùn)算量。或者說,在相同F(xiàn)FT 運(yùn)算量的情況下,復(fù)解析ZFFT 算法的頻率分辨率更高,即可實(shí)現(xiàn)頻譜的選帶細(xì)化。
通過MATLAB 平臺對FFT 算法和復(fù)解析ZFFT算法進(jìn)行仿真,以驗(yàn)證頻譜細(xì)化算法的有效性。仿真測試信號涉及單頻信號和密集多頻信號。
用MATLAB 生成包含單個(gè)頻率成分的正弦信號x1:
信號采樣頻率設(shè)為fs=5 120 Hz,F(xiàn)FT 分析點(diǎn)數(shù)設(shè)為2 048,則FFT 的頻率分辨率為2.5 Hz。使用復(fù)解析ZFFT 算法分析時(shí),細(xì)化頻帶設(shè)為60~80 Hz,細(xì)化頻帶中心頻率70 Hz,細(xì)化倍數(shù)50,對應(yīng)的頻率分辨率為0.05 Hz。
在無噪聲情況下和外加高斯白噪聲情況下[4](信噪比SNR=-5 dB,SNR=-10 dB)分別采用FFT算法、復(fù)解析ZFFT 算法對信號x1進(jìn)行頻譜分析,頻譜測量結(jié)果為:在三種情況下,F(xiàn)FT 算法仿真估計(jì)出的信號頻率均為70 Hz,誤差1.15 Hz;復(fù)解析ZFFT 算法仿真估計(jì)出的結(jié)果均為68.85 Hz,誤差0 Hz。圖2 和圖3 為在有信噪比為-10 dB 的高斯白噪聲情況下,分別采用FFT 算法、復(fù)解析ZFFT算法分析得到的頻譜圖。觀察易得,在單頻信號情況下,復(fù)解析ZFFT 算法在頻譜測量精度上比FFT算法更高。
圖2 FFT 頻譜圖(單頻)
圖3 復(fù)解析ZFFT 細(xì)化頻譜圖(單頻)
用MATLAB 生成包含多個(gè)密集頻率成分的正弦信號[5]x2:
式中:信號頻率fx2=68.35 Hz,fx3=69.70 Hz,fx4=70.23 Hz,fx5=70.85 Hz,fx6=71.06 Hz,信號幅度分別為3,5,4,3.5,6。
信號采樣頻率設(shè)為fs=5 120 Hz,F(xiàn)FT 分析點(diǎn)數(shù)設(shè)為2 048,則FFT 的頻率分辨率為2.5 Hz。使用復(fù)解析ZFFT 算法進(jìn)行分析時(shí),將細(xì)化頻帶設(shè)為60~80 Hz,細(xì)化頻帶中心頻率70 Hz,細(xì)化100 倍,相應(yīng)的頻率分辨率為0.025 Hz。
與單頻信號的仿真類似,在無噪聲情況下和外加高斯白噪聲(信噪比SNR=-5 dB,SNR=-10 dB)情況下分別采用FFT 算法和復(fù)解析ZFFT 算法對信號x2進(jìn)行頻譜分析,頻譜測量結(jié)果為:在三種情況下FFT 算法仿真估計(jì)出的結(jié)果均為70 Hz,不能將5 個(gè)頻率相差很近的信號區(qū)分開;對應(yīng)的復(fù)解析ZFFT 算法仿真估計(jì)出的結(jié)果68.35 Hz,69.70 Hz,70.225 Hz,70.85 Hz 和71.05 Hz,誤差分別為0 Hz,0 Hz,0.005 Hz,0 Hz 及0.01 Hz。圖4 和圖5 為在有信噪比為-10 dB 的高斯白噪聲情況下,分別采用FFT 算法、復(fù)解析ZFFT 算法分析得到的頻譜圖。觀察發(fā)現(xiàn),圖4 頻譜圖上只能看到一個(gè)譜峰,而圖5 頻譜圖中5 條譜線清晰可見,在有噪聲情況下,也能夠完全區(qū)分開這5 個(gè)頻率成分。
圖4 FFT 頻譜圖(密集多頻)
圖5 復(fù)解析ZFFT 細(xì)化頻譜圖(密集多頻)
本文主要針對基于復(fù)解析帶通濾波器的ZFFT頻譜細(xì)化算法進(jìn)行分析研究,同時(shí)設(shè)計(jì)合理的仿真方案,通過MATLAB 平臺對傳統(tǒng)FFT 算法和復(fù)解析ZFFT 算法進(jìn)行仿真。仿真結(jié)果表明,無論是在單頻信號、多頻信號還是密集多頻信號的情況下,使用復(fù)解析ZFFT 算法進(jìn)行局部頻譜分析都具有明顯優(yōu)勢,在相同F(xiàn)FT 運(yùn)算量的情況下,其頻率分辨率遠(yuǎn)遠(yuǎn)高于FFT 算法。特別是在密集多頻信號的頻率估計(jì)中,復(fù)解析ZFFT 算法能夠?qū)FT 根本無法分辨出的多個(gè)密集頻率成分準(zhǔn)確地細(xì)化出來,實(shí)現(xiàn)局部細(xì)化頻譜。