基于Matlab和Visual C++的數(shù)字濾波器設(shè)計(jì)方法
本文引用地址:http://butianyuan.cn/article/246736.htm
4 時(shí)域傳遞函數(shù)
Matlab一般只用于功能仿真,而實(shí)際項(xiàng)目應(yīng)用,通常采用Visual C++軟件編程進(jìn)行信號(hào)控制和硬件實(shí)現(xiàn),所以需要將Matlab仿真時(shí)使用的濾波器函數(shù)Filter轉(zhuǎn)化為C代碼實(shí)現(xiàn)。
軟件編程有時(shí)域和頻域兩種思路。由于輸入信號(hào)較為復(fù)雜不易進(jìn)行時(shí)-頻轉(zhuǎn)換,只能采用時(shí)域?yàn)V波。所以需將傳遞函數(shù)反變換到時(shí)域,對(duì)信號(hào)進(jìn)行濾波處理。
5 時(shí)域卷積濾波
卷積在通信技術(shù)和信號(hào)處理中起著重要的作用。在線性時(shí)域系統(tǒng)中,根據(jù)時(shí)間的連續(xù)性,可以分為卷積積分和卷積和。在LTI連續(xù)時(shí)間系統(tǒng)中,把激勵(lì)信號(hào)分解為一系列沖激函數(shù),求出各種沖激函數(shù)單獨(dú)作用于系統(tǒng)時(shí)的沖激響應(yīng),然后將這些響應(yīng)相加就得到系統(tǒng)對(duì)于該激勵(lì)信號(hào)的零狀態(tài)響應(yīng)。這個(gè)相加的過程表現(xiàn)為求卷積積分。在LTI離散系統(tǒng)中,可用上述方法進(jìn)行分析。由于離散信號(hào)本身是一個(gè)序列,因此,激勵(lì)信號(hào)分解為單位序列的工作就較容易完成。如果系統(tǒng)的單位序列響應(yīng)為已知,那么,也不難求得每個(gè)單位序列單獨(dú)作用于系統(tǒng)的響應(yīng)。把這些序列相加就得到系統(tǒng)對(duì)于該激勵(lì)信號(hào)的零狀態(tài)響應(yīng),這個(gè)相加的過程表現(xiàn)為求卷積和。
由于本系統(tǒng)中的信號(hào)是離散時(shí)間序列,常用的卷積和的求解方法有圖解法、對(duì)位相乘求和法、解析法和列表法等4種。一般,待處理的信號(hào)的數(shù)據(jù)量比較大,列表法不適用,所以采用解析法。
卷積與傅里葉變換有著密切的關(guān)系。利用兩個(gè)函數(shù)的傅里葉變換的乘積等于它們卷積后的傅里葉變換的性質(zhì),能使傅里葉分析中許多問題的處理得到簡(jiǎn)化。本文正是采用這一點(diǎn),將頻域的濾波轉(zhuǎn)化為時(shí)域?yàn)V波。
頻域相乘等效于時(shí)域卷積。編寫C程序求輸入信號(hào)和傳遞函數(shù)的卷積和。當(dāng)兩個(gè)信號(hào)為因果信號(hào)時(shí),可以根據(jù)式(5)求卷積和。當(dāng)f1(k)的數(shù)據(jù)長(zhǎng)度為m;f2(k)的數(shù)據(jù)長(zhǎng)度為n(n
6 結(jié)果及分析
信號(hào)分別經(jīng)卷積和濾波和Filter函數(shù)濾波,將濾波后的數(shù)據(jù)導(dǎo)入Matlab比較,結(jié)果如圖3所示。由圖可見,前者在初始狀態(tài)出現(xiàn)尖峰,這是因?yàn)榫矸e和是在特定窗口內(nèi)時(shí)域累加的過程,會(huì)造成頭部數(shù)據(jù)和尾部數(shù)據(jù)不準(zhǔn)確。雖然編寫的C卷積和濾波程序有一定的缺陷,但是整體波形一致,說明實(shí)驗(yàn)獲得初步成功。
7 結(jié)束語(yǔ)
提出了一種將硬件濾波電路數(shù)字化的方法,并在Matlab和Visual C++平臺(tái)上得以實(shí)現(xiàn)。與模擬濾波電路和傳統(tǒng)的數(shù)字濾波相比,不僅比傳統(tǒng)的數(shù)字濾波算法簡(jiǎn)單快捷,而且有效防止了模擬電路中器件的寄生參數(shù)、精度、溫度等的影響,使濾波更加穩(wěn)定。
模擬信號(hào)相關(guān)文章:什么是模擬信號(hào)
濾波器相關(guān)文章:濾波器原理
濾波器相關(guān)文章:濾波器原理
c++相關(guān)文章:c++教程
低通濾波器相關(guān)文章:低通濾波器原理
電源濾波器相關(guān)文章:電源濾波器原理
數(shù)字濾波器相關(guān)文章:數(shù)字濾波器原理
評(píng)論