周昀政,朱名日
(桂林電子科技大學 廣西 桂林 541004)
隨著技術(shù)力量的不斷提升,被處理的信號的頻率越來越高。例如,手機的信號便是上GHz的超高頻信號。在采集這類超高頻信號的過程中,系統(tǒng)很容易受到各種電磁波的干擾,從而使有用信號夾帶各式各樣的諧波成分,這就給后續(xù)的信號處理帶來了很大的麻煩,諸如數(shù)據(jù)量過大,計算復(fù)雜等。因此設(shè)計一套效率高,可用性強的系統(tǒng)來對高頻信號進行采集及處理顯得尤其重要。
在這篇文章中,作者討論一種可行的方法,即是使用LabVIEW來進行數(shù)據(jù)采集,使用MATLAB作為數(shù)據(jù)處理的平臺。那么如何高效的將兩者結(jié)合將成為設(shè)計的關(guān)鍵。本文將對不同的結(jié)合方法進行實驗,具體執(zhí)行步驟如下:首先使用LabVIEW將高頻信號采集回來并暫時保存;鑒于MATLAB強大的計算能力,作者使用它來產(chǎn)生一個用于比較的高采樣率的波形,并將這個波形通過3種不同的技術(shù)引入LabVIEW;最后通過均方差與相關(guān)性,可行性與速度的對比,分析哪一種方法才是最好的。
在文獻[1]中,作者介紹了在 LabVIEW平臺如何運用DAQ工具進行基本采集的相關(guān)操作。文獻[2]中的作者介紹了在MATLAB上對信號進行各種處理的基本方法。在文獻[3]中,作者展示了在NI平臺上如何運用Math Script RT模塊來開發(fā)MATLAB代碼。文獻 [4-5]介紹了在LabVIEW中使用MATLAB script模塊進行接口設(shè)計。
LabVIEW是一種基于數(shù)據(jù)流的編程語言,而MATLAB是第四代編程語言,用來執(zhí)行數(shù)字計算的任務(wù)。
LabVIEW的數(shù)據(jù)流編程是一種基于圖標的,因而常被人們稱為G語言。用這些圖標連成的程序叫做VIs(虛擬儀器)。程序的接口是基于前面板的,它能夠接收輸入和提供輸出,在前面板中各部分模塊以圖標連線的方式組成一個結(jié)構(gòu)框架。前面板中的另外一個重要的特性是連線板,它的作用是在一個VI中以圖標的方式使用另一個VI。
人們最初使用LabVIEW只是用來測量,自動化控制,但是隨著LabVIEW集成了越來越多的特性,它逐漸轉(zhuǎn)變成了一種完善的開發(fā)環(huán)境。G語言最大的優(yōu)勢就在于他并行執(zhí)行的能力。
MATLAB常被人們稱為第四代語言。它具有嚴謹?shù)臄?shù)字化矩陣操作,如果用一些簡單的語言,如:C,C++,來執(zhí)行這些操作的話,那不論對編程者還是計算機來說都將是非常困難的。MATLAB起初是用來計算復(fù)雜的矩陣的。它也集成了不同的特性來滿足各種各樣的要求。例如,添加的Simulink就是MATLAB朝圖形模塊化發(fā)展的重要的一步。
使用LabVIEW還是MATLAB來完成特定的功能,取決于編程者的個人愛好。但是由于某些原因,作者需要將一種編程環(huán)境的特性使用在另一種環(huán)境中,比如:將一個使用MATLAB寫的代碼使用在并行執(zhí)行的環(huán)境中。本文主要研究了LabVIEW與MATLAB相結(jié)合的3種解決方法,并通過一個用來標度的信號發(fā)生器來分析使用3種不同方法的優(yōu)劣。
所設(shè)計的系統(tǒng)結(jié)構(gòu)如圖1所示。

圖1 系統(tǒng)結(jié)構(gòu)圖Fig.1 Structure diagram of system
當要對一個高頻信號(比如高達2 GHz的信號)進行采集和處理的時候,通常會設(shè)計一個高速或者超高速硬件采集電路,包括放大部分、濾波部分;A/D和D/A轉(zhuǎn)換部分等,這對電路的要求非常高,要求邊采集邊存儲,電路速度高,而且要考慮各種輻射干擾等,同時,目前市場上的高頻信號發(fā)生器價格普遍昂貴。因此作者使用LabVIEW的DAQmx工具包,產(chǎn)生虛擬高頻信號。
DAQmx產(chǎn)生的虛擬高頻信號可調(diào)參數(shù)多,且能夠產(chǎn)生諸如正弦波,方波,鋸齒波等波形。作者使用不同參數(shù)的信號,以使得結(jié)果更具有說服力。例如:頻率范圍:500 M~10 GHz,分辨率為 10 Hz。
先在DAQmx定時VI中設(shè)定好采樣模式及采樣率,這里作者設(shè)定的是連續(xù)采樣模式和1 000的采樣率;接著在DAQmx讀取VI中,作者設(shè)定為模擬多通道多采樣2D DBL,超時設(shè)為2;最后將DAQmx開始任務(wù)VI、DAQmx停止任務(wù)VI、DAQmx清除任務(wù)VI與前面兩個VI連接,這樣就完成了基本的采集設(shè)計。將產(chǎn)生的模擬信號直接連接到波形圖表VI可以很直觀的看到波形。
前面板設(shè)計如圖2所示。
其主要部分是顯示采集波形的圖表,和內(nèi)部產(chǎn)生波形數(shù)據(jù)的圖表。表盤和其左方的波形圖是均方差的相關(guān)表述,數(shù)字控件描述的是均方差和相關(guān)系數(shù)的值。

圖2 前面板Fig.2 Front panel
相比起其他的信號比較法,如:基線信號比較法、信噪比和有效數(shù)據(jù)位比較法等,采用均方差來比較波形顯得更加的簡便,可靠。而相關(guān)性揭示了2個波形的相似度,即是2個數(shù)據(jù)間的線性關(guān)系。
采集的數(shù)據(jù)在LabVIEW中被保存為一個txt文檔,這只需要將數(shù)據(jù)連線到寫入文本文件VI即可。保存的數(shù)據(jù)可以被用來進行處理、分析或者是其它用途,同時這也提供了備份以防止不可遇見的事故發(fā)生。
MATLAB被用來執(zhí)行數(shù)據(jù)計算來比較2個波形。
4.3.1 均方差
均方差的代碼實現(xiàn)了將2個波形數(shù)據(jù)按照矩陣的形式代入方程中,然后將所得結(jié)果返回給LabVIEW并顯示出來。均方差的公式由下式給出

4.3.2 相關(guān)系數(shù)
相關(guān)系數(shù)可以用以下命令實現(xiàn)

這條命令將2個矩陣(一個是采集得到的,一個是內(nèi)部生成的)建立相關(guān)性,并輸出計算得到的相關(guān)系數(shù)。
相關(guān)系數(shù)的公式如下

4.3.3 參考信號
參考信號用來與采集得到的信號數(shù)據(jù)進行均方差與相關(guān)性的對比。它由MATLAB產(chǎn)生,因為MATLAB擁有豐富的數(shù)學函數(shù)庫及強大的各種工具箱(ToolBox),這就使得作者可以很方便靈活的產(chǎn)生各種參數(shù)的不同信號,而且使用MATLAB能得到較高的采樣率,并且對信號的處理也比較簡單,同時也避免了將參考信號引入MATLAB script模塊的麻煩。
為了實現(xiàn)第一種方法,作者運用LabVIEW的DAQ工具包,設(shè)定好產(chǎn)生虛擬信號的參數(shù),再將信號采集回來,并將數(shù)據(jù)保存為一個txt文件。將這個txt文件引入MATLAB,并與MATLAB內(nèi)部產(chǎn)生的信號進行對比,通過計算得到均方差和相關(guān)系數(shù)。
第二種方法只使用LabVIEW一個軟件,首先采集信號數(shù)據(jù)并保存,接著使用LabVIEW的MATLAB script模塊產(chǎn)生內(nèi)部信號,最后將倆信號對比并計算均方差和相關(guān)系數(shù),如圖3所示。

圖3 MATLAB scriptFig.3 MATLAB script
第三種方法借助LabVIEW內(nèi)部的Math Script RT來完成,具體步驟和第二種方法類似,如圖4所示。

圖4 Math script RTFig.4 Math script RT
實驗環(huán)境為 CPU:Intel Pentium D 2.8 GHz, 內(nèi)存:1G,顯卡:GT220,系統(tǒng):Windows XP。
產(chǎn)生高頻信號為1 GHz,深度為1 024 M,重復(fù)實驗10次。
對于一些小誤差,如校準誤差,幾乎可以忽略不計,因為都是在同一個環(huán)境下試驗完成的。因此作者集中分析方法的可行性,然后對比3種方法,最后得出結(jié)論哪一種是最好的。
這種方法非常耗時。首先,使用LabVIEW采集得到數(shù)據(jù)并將之保存為一個txt文件,然后再將這個文件引入MATLAB。即是用戶需要在打開一個軟件后再打開另外一個軟件來完成操作,這是很繁瑣的。
從開發(fā)者的角度來說,這種方法也許很簡單或者說是不那么復(fù)雜。但是,這種方法可行性最低。因為除了耗時,它還需要對這兩種軟件有一定的認識,因此花在查找文獻上的時間也相應(yīng)的增多了。
另外,這種方法增加了電腦的負擔,畢竟是開了兩個程序。如果你使用的是一臺老電腦的話,那么這可能會降低你的工作效率。
綜上,作者不建議使用這種方法。
這種方法經(jīng)過驗證比上一種要好。因為用戶不必打開兩個應(yīng)用程序來執(zhí)行程序,所以相對的比較可行。
但是,這種方法也需要安裝MATLAB軟件,才能在LabVIEW中調(diào)用MATLAB script模塊。這樣就導(dǎo)致了程序執(zhí)行的緩慢,因為用戶必須等待一段時間讓計算機進行切換計算。
除了操作性的難題,這種方法最主要的問題還是不能夠?qū)崟r計算。采集的數(shù)據(jù)必須先保存為矩陣的形式,然后再調(diào)用MATLAB script模塊進行處理。這樣就不僅浪費了時間,而且還需要另外的算法來臨時保存數(shù)據(jù)。
這種方法使用了內(nèi)嵌的Math Script模塊,它集合了LabVIEW和MATLAB的優(yōu)點,而且還不需要安裝另外的軟件。Math Script模塊沒有必要調(diào)用MATLAB軟件,因為它本身就能夠識別800多條命令,也就是說使用Math Script模塊的話就不需要再安裝MATLAB軟件了。
相比上一種方法,最主要的優(yōu)勢除了運行快還有就是能夠進行實時處理。因為其不需要對數(shù)據(jù)進行臨時的數(shù)據(jù)存儲,也沒有丟失實時的信息,這就使得它的運行速度是最快的。測試結(jié)果如圖5所示。

圖5 三種方法對比結(jié)果Fig.5 Result of three methods
為了最優(yōu)化系統(tǒng)的性能,本文提倡對不同目的使用不同的軟件。使用LabVIEW進行數(shù)據(jù)采集,運用MATLAB進行數(shù)據(jù)處理,這是很多項目的需要,也是很多程序員的需要。文中使用3種方法將LabVIEW與MATLAB的特性相結(jié)合:引入txt文件到MATLAB,使用MATLAB script模塊,使用Math Script RT。通過分析得到的結(jié)果,證實了使用Math Script RT無論在速度和可行性方面都是最好的。
[1]龍華偉,顧永剛.LabVIEW8.2.1與DAQ數(shù)據(jù)采集[M].北京:清華大學出版社,2008.
[2]McClellan J H.基于計算機的信號處理實踐[M].欒曉明,譯.北京:電子工業(yè)出版社,2006.
[3]Gary Parente.Reducing the cost,Simplifying the process[EB/OL]. [2012-11-23].http://www.asam.net/fileadmin/Logos_Brochures_Presentations/Presentations/GParente.pdf.
[4]陳金平.LabVIEW與Matlab接口的方法 [J].自動化儀表,2004,25(3):53-54.CHEN Jin-ping.The method of interfacing between LabVIEW and matlab[J].Process Automation Instrumentation,2004,25(3):53-54.
[5]李景廣,王哨軍,董坤,等.LabVIEW與其他應(yīng)用程序的接口設(shè)計[J].電子測量與儀器學報,2007:491-494.LI Jing-guang,WANG Shao-jun,DONG Kun,et al.Design of language interface between LabVIEW and other frequently used program[J].Journal of Electronic Measurement and Instrumentation,2007:491-494.
[6]Hans-PetterHalvorsen.LabVIEW MathScript Tutorial[EB/OL].(2011-02-11)[2012-11-19].http://home.hit.no/~hansha/documents/labview/training/LabVIEW%20MathScript/LabVIEW%20MathScript.pdf.