王鈺楠+關靜+劉然



摘 要: 由于數字濾波器在信號處理過程中應用廣泛,所以研究濾波器的設計具有重要的實際意義。文章利用LabWindows/CVI軟件設計了濾波處理界面,該界面包括信號的產生、噪聲的疊加和濾波器處理;該界面可以選擇多種原始信號與噪聲信號,并且可以快速、便捷地修改濾波器的參數。經過實驗驗證,利用LabWindows/CVI軟件設計數字濾波器,操作簡單、功能強大,可以用于實際。
關鍵詞: 數字濾波器; 虛擬儀器; 濾波; 噪聲
中圖分類號: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 引言
在信號處理過程中,對處理的實時性和快速性的要求越來越高。許多信號與信息處理都要用到濾波器,如對信號的過濾、檢測、預測、估計等。其中模擬濾波器一般是由硬件電路實現,使用電容、電阻、電感等元器件實現濾波功能。而利用硬件電路設計濾波器,會使得電路計算、測試、調試過程復雜,且存在電壓漂移、溫度漂移和噪聲等問題;相較而言,數字濾波器具有穩定性好、精度高、設計靈活、實現方便等許多突出的優點,克服了模擬濾波器的缺陷[1]。因而隨著數字技術的發展,用數字技術實現濾波器的功能越來越受到人們的注意并得到廣泛的應用。
1 LabWindows/CVI簡介
LabWindows/CVI是美國國家儀器公司(NI公司)推出的交互式C語言開發平臺。LabWindows/CVI將功能強大、使用靈活的C語言平臺與用于數據采集分析和顯示的測控工具有機地結合起來,利用它的集成化開發環境、交互式編程方法、函數面板和豐富的庫函數大大增強了C語言的功能,為熟悉C語言的開發設計人員編寫檢測系統、自動測試環境、數據采集系統、過程監控系統等應用軟件提供了一個理想的軟件開發環境[2]。
2 數字濾波器
2.1 數字濾波器的原理
數字濾波器在數字信號處理中占據著非常重要的地位。其實數字濾波可以被看做是一種運算過程,即將一組被輸入的數字信號量的序列通過一定的運算轉換后,得到另一組輸出的數字信號序列。因此它本身就是一臺數字式的處理設備[3]。
一個數字濾波器可以用系統函數表示為:
對式⑴進行歸一化處理,可以得出對應濾波器輸入輸出關系的常系數線性差分方程:
數字濾波器主要分為兩種有限長數字濾波器(FIR)和無限長數字濾波器(IIR)。IIR濾波器的首要優點是可在相同階數時取得更好的濾波效果;而FIR濾波器的最主要的特點是沒有反饋回路,則不會出現不穩定的問題;同時,FIR濾波器可以同時保證幅度特性隨意設置和線性相位精確度,穩定和線性相位特性是FIR濾波器的突出優點[4]。
2.2 數字濾波器設計的一般步驟
⑴ 確定濾波器的性能指標,使其滿足具體的任務需求;
⑵ 用因果系統的離散線性時不變系統函數來逼近確立的性能指標;
⑶ 利用有限精度算法去實現這個系統函數。(包括選擇適當的運算結構、確定合適的字長和有效數字處理方法等)
⑷ 用適當的軟、硬件技術實現。(包括采用通用計算機軟件、數字濾波器硬件、或者兩者結合)
3 利用LabWindows/CVI設計數字濾波器
在LabWindows/CVI集成開發環境下,先建立一個工程,一個工程最終有.iur(用戶界面文件)、.c(源文件)和自動生成的.h(頭文件),.c文件中包含一個mian{}或者winMaln{}形式的c語言程序框架及與用戶界面資源對應的一些空回調函數,.h文件包含用戶界面文件中使用的各種資源的定義[5]。
利用LabWindows/CVI設計濾波處理界面,需要首先新建一個用戶界面文件,然后在該用戶界面中添加所需的控件,利用該軟件生成所需的代碼,最后根據自己的需求,利用C語言編輯代碼實現所需的功能。
本文設計的濾波器的方法是巴特沃斯,且該濾波器的設計包括三部分,分別為:產生信號、疊加信號和濾波處理。首先產生一個模擬的原始信號和一個噪聲,通過信號疊加處理產生一個受噪聲干擾的模擬信號,最后經濾波器濾波處理,得到原始信號。用戶面板設計如圖1所示。
程序設計的主要思路是:先產生原始信號與噪聲信號,設計圖表控件,裝載界面時顯示信號波形;然后對原始信號與噪聲信號進行疊加處理;最后設計濾波器的濾波方法與濾波方式,將原始波形、噪聲波形、疊加噪聲波形與濾波后的波形分別顯示出來,將原始波形、疊加噪聲干擾波形與濾波處理后波形進行比較,分析濾波器的濾波效果。程序流程圖如圖2所示。
3.1 信號源
虛擬儀器產生的信號主要來自數據采集卡,數據采集卡將輸入的連續模擬信號轉換成離散數字信號,再對這些數據進行處理。信號的產生類庫位于LibraryàAdvanced AnalysisàSignal Generation下。信號的產生類庫可以產生多種信號,在本界面中主要設計了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 信號疊加
本設計所用到的信號處理方式是信號疊加。信號的分析類庫位于LibraryàAdvanced AnalysisàSignal Processing下。
選擇噪聲的類型,然后設置噪聲的增益、采樣頻率以及周期等參數,最后在原始信號的基礎上疊加噪聲。
noisewave=malloc (wavepoint * sizeof (double));
Uniform (wavepoint, 1, noisewave);
//在原信號基礎上疊加高斯白噪聲信號
noisewave=malloc (wavepoint * sizeof (double));
Uniform (wavepoint, 1, noisewave);
//在原信號基礎上疊加均勻白噪聲信號
3.3 濾波處理
本文利用巴特沃斯方法設計了濾波器。首先選擇濾波方法(一步法、二步法、三步法),然后對濾波階數、上限截止頻率、下限截止頻率等濾波參數進行設置,最后選擇選擇濾波器的類型低通、高通、帶通、帶阻完成信號的濾波處理。
Bw_CascadeCoef (wavepoint, lowercutoff, highercutoff,
filterinformation); //產生巴特沃斯濾波器系數
IIRCascadeFiltering (noisewave, wavepoint,
filterinformation, noisewave); //信號濾波
FreeIIRFilterPtr (filterinformation); //釋放濾波器結構
4 結論
本文通過設計實例,介紹了利用LabWindows/CVI實現數字濾波器的設計與濾波處理,該設計方法使用簡單、操作快捷,大大減輕了開發員的工作量,通過比較原始波形與濾波器濾波處理后的波形,可以看出,濾波器過濾掉了噪聲干擾,恢復出了原始波形,實現了濾波器的濾噪功能。在實際的應用中,只需按照需求修改濾波器參數,而不用修改程序,即可以實現不同截止頻率的數字濾波器的設計,該方法有很好的應用價值。
參考文獻(References):
[1] 萬娟.地震數據采集系統中的數字濾波器設計[D].中國科學技術大學,2009.
[2] 王建新,隋美麗.LabWindows/CVI虛擬儀器測試技術及工程應用[M].化學工業出版社,2011.
[3] 劉萬松.基于DSP的FIR數字濾波器的設計[D].貴州大學,2008.
[4] 葛遠香,胡開明,GEYuan-xiang等.基于MATLAB和DspBuilder的電網信號FIR濾波器設計[J].東華理工大學學報自然科學版,2010.33(2):197-200
[5] 李騰飛,張輝,LiTengfei等.基于LabWindows/CVI和Matlab的濾波器設計[J].電子科技,2007.3:29-31