軟件仿真頻率細化過程的分析與實現
介紹頻率細化過程,并對移頻法頻率細化(ZOOM)過程中的幾個問題進行了分析,最后介紹用MATLAB語言仿真頻率細化過程。
???? 關鍵詞: 仿真 頻率細化 移頻 ?? 最終尋優結果
?? 1 頻率細化過程介紹
??? ? 頻率細化是在信號處理和模態分析中廣泛應用的一種技術,它能夠提高頻率的分辨率,將選定的頻率域上的特性曲線放大,從而使系統的頻率特性能更清楚地顯示出來,如圖1所示。
??? ?? 設系統的采樣頻率為fs,采樣點數為NO,則頻率分辨率為:
???? Δf=fs/NO
??? ? 從上式可以看出,要進行頻率細化,即提高頻率分辨率,使Δf變小,有兩種方法:增加采樣點數NO和降低采樣頻率fs,這里只介紹降低采樣頻率的方法。
???? 這種方法主要是基于移頻原理,如圖2所示。
???? 設想要移頻部分的頻率為fp,其角頻率為wp=2πfp,令f ?? (t)=exp(-jwpt)。時域信號x(t)與f(t)卷積后,則在頻域上,該信號的fp頻率就移到了原點處。
??? 信號頻率移到低頻后,經過低通濾波,就可以用低的采樣頻率進行采樣,從而達到提高頻率分辨率、頻率細化的目的。具體過程如圖3所示。
????? 2 移頻法頻率細化過程中幾個問題的分析
??? (1)非細化處理的系統采樣頻率為fs,采樣點數為NO。對于細化過程,設頻率細化倍數為Nr,信號經過抗混疊濾波器后進行A/D采樣,采樣頻率應仍為原來的fs,保持不變,采樣點數則為Nr*NO,這樣就保證了細化與非細化處理的基本頻帶范圍保持不變,并且可以細化這一頻帶中的任何一段。
??? (2)要細化的頻率范圍為fl~fu,移頻后,低頻點fl移到原點,則高頻點變為(fu-fl)。這時數字低通濾波器的截止頻率應大于(fu-fl),并小于低頻重采樣頻率fs/Nr的一半。即截止頻率的范圍為:
(fu-fl)<fc<fs/2Nr
??? 且可以得到最大細化倍數N與細化頻率范圍之間的關系為:
Nr<fs/2(fu-fl)?
??? 這為設置細化倍數范圍提供了依據。
??? (3)數字低通濾波器的通帶必須平,通帶內波動要小,這樣原信號的頻率特性細化后在幅值上才不會改變;同時,最好使濾波器的帶外衰減>-70dB,且-70dB處的頻率<fs/2Nr,這樣就能保證低頻重新采樣時抗混疊的效果最好,細化的效果也最好。
???? (4)細化與不細化過程占用時間的比較:由于采樣點數NO保持不變,因此細化處理的FFT時間與不細化的FFT時間一樣,都是NOLog(NO)/2;細化過程要進行Nr*NO點的高頻采樣和NO點的低頻采樣,而不細化過程只進行NO點的高頻采樣,所以在采樣時間上,細化過程要稍長一點。但它與NO點的FFT變換時間比起來可以不計,因此,細化處理與不細化處理在時間上差不多。
??? (5)移頻法頻率細化與增加采樣點數頻率細化的比較:移頻法頻率細化只進行NO個點的FFT變換,和一些數組、矩陣的運算,它所花的時間約為:NOLog(NO)/2;而采用增加采樣點數頻率細化要進行Nr*NO個點的FFT變換,它所花的時間約為:(Nr*NO)Log(Nr*No)/2,因此采用移頻法頻率細化的時間要短得多,這是它的優點,也是工程應用中多采用這種方法的原因,我們也只對它進行仿真。
???? 由于移頻使fl前面的頻段移到頻域的負軸上,而低通濾波又濾掉了fu后面的高頻部分,因此,這種方法只能進行一段頻率的細化,不能進行全頻段的細化,這是移頻法頻率細化的缺點。要進行全頻段細化,可以采用增加采樣點數的方法。
???? 3 用MATLAB仿真頻率細化過程
???? 用MATLAB程序仿真圖3這個過程,主要實現A/D采樣、移頻、低通濾波、低頻重新采樣、FFT變換等,同時注意上面幾個問題的分析。
???? 總信號由302Hz、304Hz、306Hz、308Hz四個不同頻率、不同幅值的正余弦信號合成。采樣點為512,采樣頻率為5120Hz,則頻率分辨率為10Hz,這在頻域內分辨不出這四個信號。仿真軟件在300~320Hz范圍內細化10倍,則這時頻率分辨率為1Hz,就可以逐漸看清楚這四個信號。
x(t)=sin(2*302)+2cos(2π*304)+3sin?(2π*306)+4sin(2π*308)
???? 細化處理需要5120個采樣點,仿真時A/D采樣用對連續信號x(t)?進行離散化來代替,離散化的點值就是采樣值,它們組成一個數組(矩陣),這是一個點序列。
???? 采樣完成后,對采樣點進行移頻仿真(將300Hz移頻到原點),由以下步驟實現:
???? 令:F1=300?W1=2π*F1
???? f(t)=exp(-jw1*t)?
???? t取離散化時刻,Δt=1/fs?Tk=k*Δt
???? 則f(t)離散化可變為:
???? f(k)=exp(-jw1*Tk)
???? =exp[(-j2π*f1*k)/fs]?
?? ? 這也是一個點序列。
???? MATLAB將上面兩個點序列進行卷積(矩陣相乘),得到一個新的點序列,就實現了移頻過程,即使F1=300Hz 在頻域上移動了0,其它頻率特性依此前移。
???? MATLAB語言有很方便的濾波器設計和數字濾波功能,可用它設計一個帶內波動<0.1dB,帶外衰減>-70dB,截止頻率為20Hz的低通濾波器,并將上面的點序列進行數字濾波,得到一個只在0~20Hz頻段上有特性曲線、其它頻段被濾掉的信號的點序列。
???? 對上面的點序列每隔10點(細化倍數)進行抽取,實際上就是對經移頻、濾波后的信號進行重新采樣。采樣頻率為S120Hz/10,即采樣頻率降低了10倍,抽取得到512個點。
???? 對這512個點進行FFT變換,就可以得到300Hz~320Hz頻段上已細化10倍的頻率特性曲線了,結果如圖4、圖8所示。
???? 用仿真程序分別進行2、4、8、10倍的頻率細化,從運行結果可以看出,細化倍數越大,頻率分辨率就越高,頻域波形越看得清楚,這與理論是相符合的。
??? 參考文獻
??? 1 Kenneth G.McConnell.Vibration testing Theory and Practice.John Wiley & Sons,lnc.New York,1995
??? 2 Randall?R.B.Frequency Analysis.Available from Bruel & Kjaer lnstruments,lnc.Marlborough,MA,1987
??? 3 張培強.MATLAB語言.合肥:中國科技大學出版社,1995
評論
查看更多