王鈺楠+關(guān)靜+劉然
摘 要: 由于數(shù)字濾波器在信號處理過程中應(yīng)用廣泛,所以研究濾波器的設(shè)計具有重要的實際意義。文章利用LabWindows/CVI軟件設(shè)計了濾波處理界面,該界面包括信號的產(chǎn)生、噪聲的疊加和濾波器處理;該界面可以選擇多種原始信號與噪聲信號,并且可以快速、便捷地修改濾波器的參數(shù)。經(jīng)過實驗驗證,利用LabWindows/CVI軟件設(shè)計數(shù)字濾波器,操作簡單、功能強大,可以用于實際。
關(guān)鍵詞: 數(shù)字濾波器; 虛擬儀器; 濾波; 噪聲
中圖分類號:TP312 文獻標志碼:A 文章編號:1006-8228(2017)03-34-03
Abstract: Because of the wide application of digital filter in signal processing, it is of great practical significance to study the design of the filter. With LabWindows/CVI software, a filter processing interface is designed in this paper, which includes signal generation, noise superposition and filter processing; the interface can choose a variety of the original signal and noise signal, and can quickly and conveniently modify the filter parameters. After experimental verification, designing digital filter with LabWindows/CVI software is simple and powerful, and can be widely used in practice.
Key words: digital filter; virtual instrument; filtering process; noise
0 引言
在信號處理過程中,對處理的實時性和快速性的要求越來越高。許多信號與信息處理都要用到濾波器,如對信號的過濾、檢測、預(yù)測、估計等。其中模擬濾波器一般是由硬件電路實現(xiàn),使用電容、電阻、電感等元器件實現(xiàn)濾波功能。而利用硬件電路設(shè)計濾波器,會使得電路計算、測試、調(diào)試過程復(fù)雜,且存在電壓漂移、溫度漂移和噪聲等問題;相較而言,數(shù)字濾波器具有穩(wěn)定性好、精度高、設(shè)計靈活、實現(xiàn)方便等許多突出的優(yōu)點,克服了模擬濾波器的缺陷[1]。因而隨著數(shù)字技術(shù)的發(fā)展,用數(shù)字技術(shù)實現(xiàn)濾波器的功能越來越受到人們的注意并得到廣泛的應(yīng)用。
1 LabWindows/CVI簡介
LabWindows/CVI是美國國家儀器公司(NI公司)推出的交互式C語言開發(fā)平臺。LabWindows/CVI將功能強大、使用靈活的C語言平臺與用于數(shù)據(jù)采集分析和顯示的測控工具有機地結(jié)合起來,利用它的集成化開發(fā)環(huán)境、交互式編程方法、函數(shù)面板和豐富的庫函數(shù)大大增強了C語言的功能,為熟悉C語言的開發(fā)設(shè)計人員編寫檢測系統(tǒng)、自動測試環(huán)境、數(shù)據(jù)采集系統(tǒng)、過程監(jiān)控系統(tǒng)等應(yīng)用軟件提供了一個理想的軟件開發(fā)環(huán)境[2]。
2 數(shù)字濾波器
2.1 數(shù)字濾波器的原理
數(shù)字濾波器在數(shù)字信號處理中占據(jù)著非常重要的地位。其實數(shù)字濾波可以被看做是一種運算過程,即將一組被輸入的數(shù)字信號量的序列通過一定的運算轉(zhuǎn)換后,得到另一組輸出的數(shù)字信號序列。因此它本身就是一臺數(shù)字式的處理設(shè)備[3]。
一個數(shù)字濾波器可以用系統(tǒng)函數(shù)表示為:
對式⑴進行歸一化處理,可以得出對應(yīng)濾波器輸入輸出關(guān)系的常系數(shù)線性差分方程:
數(shù)字濾波器主要分為兩種有限長數(shù)字濾波器(FIR)和無限長數(shù)字濾波器(IIR)。IIR濾波器的首要優(yōu)點是可在相同階數(shù)時取得更好的濾波效果;而FIR濾波器的最主要的特點是沒有反饋回路,則不會出現(xiàn)不穩(wěn)定的問題;同時,F(xiàn)IR濾波器可以同時保證幅度特性隨意設(shè)置和線性相位精確度,穩(wěn)定和線性相位特性是FIR濾波器的突出優(yōu)點[4]。
2.2 數(shù)字濾波器設(shè)計的一般步驟
⑴ 確定濾波器的性能指標,使其滿足具體的任務(wù)需求;
⑵ 用因果系統(tǒng)的離散線性時不變系統(tǒng)函數(shù)來逼近確立的性能指標;
⑶ 利用有限精度算法去實現(xiàn)這個系統(tǒng)函數(shù)。(包括選擇適當?shù)倪\算結(jié)構(gòu)、確定合適的字長和有效數(shù)字處理方法等)
⑷ 用適當?shù)能洝⒂布夹g(shù)實現(xiàn)。(包括采用通用計算機軟件、數(shù)字濾波器硬件、或者兩者結(jié)合)
3 利用LabWindows/CVI設(shè)計數(shù)字濾波器
在LabWindows/CVI集成開發(fā)環(huán)境下,先建立一個工程,一個工程最終有.iur(用戶界面文件)、.c(源文件)和自動生成的.h(頭文件),.c文件中包含一個mian{}或者winMaln{}形式的c語言程序框架及與用戶界面資源對應(yīng)的一些空回調(diào)函數(shù),.h文件包含用戶界面文件中使用的各種資源的定義[5]。
利用LabWindows/CVI設(shè)計濾波處理界面,需要首先新建一個用戶界面文件,然后在該用戶界面中添加所需的控件,利用該軟件生成所需的代碼,最后根據(jù)自己的需求,利用C語言編輯代碼實現(xiàn)所需的功能。
本文設(shè)計的濾波器的方法是巴特沃斯,且該濾波器的設(shè)計包括三部分,分別為:產(chǎn)生信號、疊加信號和濾波處理。首先產(chǎn)生一個模擬的原始信號和一個噪聲,通過信號疊加處理產(chǎn)生一個受噪聲干擾的模擬信號,最后經(jīng)濾波器濾波處理,得到原始信號。用戶面板設(shè)計如圖1所示。
程序設(shè)計的主要思路是:先產(chǎn)生原始信號與噪聲信號,設(shè)計圖表控件,裝載界面時顯示信號波形;然后對原始信號與噪聲信號進行疊加處理;最后設(shè)計濾波器的濾波方法與濾波方式,將原始波形、噪聲波形、疊加噪聲波形與濾波后的波形分別顯示出來,將原始波形、疊加噪聲干擾波形與濾波處理后波形進行比較,分析濾波器的濾波效果。程序流程圖如圖2所示。
3.1 信號源
虛擬儀器產(chǎn)生的信號主要來自數(shù)據(jù)采集卡,數(shù)據(jù)采集卡將輸入的連續(xù)模擬信號轉(zhuǎn)換成離散數(shù)字信號,再對這些數(shù)據(jù)進行處理。信號的產(chǎn)生類庫位于LibraryàAdvanced AnalysisàSignal Generation下。信號的產(chǎn)生類庫可以產(chǎn)生多種信號,在本界面中主要設(shè)計了5種原始信號與4種噪聲信號。
⑴ 原始信號
SinePattern (samplepoint, amp, phase, cycle, wave);
//正弦信號
TriangleWave (samplepoint, amp, (double)cycle/
samplepoint, &phase, wave); //三角波信號
⑵ 噪聲信號
GaussNoise (samplepoint, 1.0, 1, wave);
//高斯白噪聲信號
Uniform (samplepoint, 1, wave); //均勻白噪聲信號
3.2 信號疊加
本設(shè)計所用到的信號處理方式是信號疊加。信號的分析類庫位于LibraryàAdvanced AnalysisàSignal Processing下。
選擇噪聲的類型,然后設(shè)置噪聲的增益、采樣頻率以及周期等參數(shù),最后在原始信號的基礎(chǔ)上疊加噪聲。
noisewave=malloc (wavepoint * sizeof (double));
Uniform (wavepoint, 1, noisewave);
//在原信號基礎(chǔ)上疊加高斯白噪聲信號
noisewave=malloc (wavepoint * sizeof (double));
Uniform (wavepoint, 1, noisewave);
//在原信號基礎(chǔ)上疊加均勻白噪聲信號
3.3 濾波處理
本文利用巴特沃斯方法設(shè)計了濾波器。首先選擇濾波方法(一步法、二步法、三步法),然后對濾波階數(shù)、上限截止頻率、下限截止頻率等濾波參數(shù)進行設(shè)置,最后選擇選擇濾波器的類型低通、高通、帶通、帶阻完成信號的濾波處理。
Bw_CascadeCoef (wavepoint, lowercutoff, highercutoff,
filterinformation); //產(chǎn)生巴特沃斯濾波器系數(shù)
IIRCascadeFiltering (noisewave, wavepoint,
filterinformation, noisewave); //信號濾波
FreeIIRFilterPtr (filterinformation); //釋放濾波器結(jié)構(gòu)
4 結(jié)論
本文通過設(shè)計實例,介紹了利用LabWindows/CVI實現(xiàn)數(shù)字濾波器的設(shè)計與濾波處理,該設(shè)計方法使用簡單、操作快捷,大大減輕了開發(fā)員的工作量,通過比較原始波形與濾波器濾波處理后的波形,可以看出,濾波器過濾掉了噪聲干擾,恢復(fù)出了原始波形,實現(xiàn)了濾波器的濾噪功能。在實際的應(yīng)用中,只需按照需求修改濾波器參數(shù),而不用修改程序,即可以實現(xiàn)不同截止頻率的數(shù)字濾波器的設(shè)計,該方法有很好的應(yīng)用價值。
參考文獻(References):
[1] 萬娟.地震數(shù)據(jù)采集系統(tǒng)中的數(shù)字濾波器設(shè)計[D].中國科學(xué)技術(shù)大學(xué),2009.
[2] 王建新,隋美麗.LabWindows/CVI虛擬儀器測試技術(shù)及工程應(yīng)用[M].化學(xué)工業(yè)出版社,2011.
[3] 劉萬松.基于DSP的FIR數(shù)字濾波器的設(shè)計[D].貴州大學(xué),2008.
[4] 葛遠香,胡開明,GEYuan-xiang等.基于MATLAB和DspBuilder的電網(wǎng)信號FIR濾波器設(shè)計[J].東華理工大學(xué)學(xué)報自然科學(xué)版,2010.33(2):197-200
[5] 李騰飛,張輝,LiTengfei等.基于LabWindows/CVI和Matlab的濾波器設(shè)計[J].電子科技,2007.3:29-31