GHz高頻信號(hào)的LabVIEW和MATLAB混合處理新方法
摘要:探討了對(duì)高頻信號(hào)進(jìn)行采集和處理的設(shè)計(jì)難點(diǎn),提出將LabVIEW的采集數(shù)據(jù)的特性與MATLAB強(qiáng)大的計(jì)算能力相結(jié)合的方法,并以此設(shè)計(jì)了一個(gè)系統(tǒng)。然后通過3種不同的方法,分別是將txt文件引入MATLAB、使用MATLAB script、使用Math Script RT,來結(jié)合LabVIEW和MATLAB,以采集得到的信號(hào)和內(nèi)部產(chǎn)生信號(hào)的均方差及相關(guān)系數(shù)為標(biāo)度來分析不同方法的可行性及效率,通過對(duì)比結(jié)果,最終確定了一種最佳的方案。
關(guān)鍵詞:高頻信號(hào);均方差;相關(guān)系數(shù);LabVIEW;MATLAB
隨著技術(shù)力量的不斷提升,被處理的信號(hào)的頻率越來越高。例如,手機(jī)的信號(hào)便是上GHz的超高頻信號(hào)。在采集這類超高頻信號(hào)的過程中,系統(tǒng)很容易受到各種電磁波的干擾,從而使有用信號(hào)夾帶各式各樣的諧波成分,這就給后續(xù)的信號(hào)處理帶來了很大的麻煩,諸如數(shù)據(jù)量過大,計(jì)算復(fù)雜等。因此設(shè)計(jì)一套效率高,可用性強(qiáng)的系統(tǒng)來對(duì)高頻信號(hào)進(jìn)行采集及處理顯得尤其重要。
1 設(shè)計(jì)思路
在這篇文章中,作者討論一種可行的方法,即是使用LabVIEW來進(jìn)行數(shù)據(jù)采集,使用MATLAB作為數(shù)據(jù)處理的平臺(tái)。那么如何高效的將兩者結(jié)合將成為設(shè)計(jì)的關(guān)鍵。本文將對(duì)不同的結(jié)合方法進(jìn)行實(shí)驗(yàn),具體執(zhí)行步驟如下:首先使用LabVIEW將高頻信號(hào)采集回來并暫時(shí)保存;鑒于MATLAB強(qiáng)大的計(jì)算能力,作者使用它來產(chǎn)生一個(gè)用于比較的高采樣率的波形,并將這個(gè)波形通過3種不同的技術(shù)引入LabVIEW;最后通過均方差與相關(guān)性,可行性與速度的對(duì)比,分析哪一種方法才是最好的。
2 文獻(xiàn)調(diào)查
在文獻(xiàn)中,作者介紹了在LabVIEW平臺(tái)如何運(yùn)用DAQ工具進(jìn)行基本采集的相關(guān)操作。文獻(xiàn)中的作者介紹了在MATLAB上對(duì)信號(hào)進(jìn)行各種處理的基本方法。在文獻(xiàn)中,作者展示了在NI平臺(tái)上如何運(yùn)用Math Script RT模塊來開發(fā)MATLAB代碼。文獻(xiàn)介紹了在LabVIEW中使用MATLABscript模塊進(jìn)行接口設(shè)計(jì)。
3 軟件介紹說明
LabVIEW是一種基于數(shù)據(jù)流的編程語言,而MATLAB是第四代編程語言,用來執(zhí)行數(shù)字計(jì)算的任務(wù)。
LabVIEW的數(shù)據(jù)流編程是一種基于圖標(biāo)的,因而常被人們稱為G語言。用這些圖標(biāo)連成的程序叫做VIs(虛擬儀器)。程序的接口是基于前面板的,它能夠接收輸入和提供輸出,在前面板中各部分模塊以圖標(biāo)連線的方式組成一個(gè)結(jié)構(gòu)框架。前面板中的另外一個(gè)重要的特性是連線板,它的作用是在一個(gè)VI中以圖標(biāo)的方式使用另一個(gè)VI。
人們最初使用LabVIEW只是用來測(cè)量,自動(dòng)化控制,但是隨著LabVIEW集成了越來越多的特性,它逐漸轉(zhuǎn)變成了一種完善的開發(fā)環(huán)境。G語言最大的優(yōu)勢(shì)就在于他并行執(zhí)行的能力。
MATLAB常被人們稱為第四代語言。它具有嚴(yán)謹(jǐn)?shù)臄?shù)字化矩陣操作,如果用一些簡(jiǎn)單的語言,如:C,C++,來執(zhí)行這些操作的話,那不論對(duì)編程者還是計(jì)算機(jī)來說都將是非常困難的。MATLAB起初是用來計(jì)算復(fù)雜的矩陣的。它也集成了不同的特性來滿足各種各樣的要求。例如,添加的Simulink就是MATLAB朝圖形模塊化發(fā)展的重要的一步。
使用LabVIEW還是MATLAB來完成特定的功能,取決于編程者的個(gè)人愛好。但是由于某些原因,作者需要將一種編程環(huán)境的特性使用在另一種環(huán)境中,比如:將一個(gè)使用MATIAB寫的代碼使用在并行執(zhí)行的環(huán)境中。本文主要研究了LabVIEW與MATLAB相結(jié)合的3種解決方法,并通過一個(gè)用來標(biāo)度的信號(hào)發(fā)生器來分析使用3種不同方法的優(yōu)劣。
4 系統(tǒng)
所設(shè)計(jì)的系統(tǒng)結(jié)構(gòu)如圖1所示。
4.1 產(chǎn)生信號(hào)
當(dāng)要對(duì)一個(gè)高頻信號(hào)(比如高達(dá)2 GHz的信號(hào))進(jìn)行采集和處理的時(shí)候,通常會(huì)設(shè)計(jì)一個(gè)高速或者超高速硬件采集電路。包括放大部分、濾波部分;A/D和D/A轉(zhuǎn)換部分等,這對(duì)電路的要求非常高,要求邊采集邊存儲(chǔ),電路速度高,而且要考慮各種輻射干擾等,同時(shí),目前市場(chǎng)上的高頻信號(hào)發(fā)生器價(jià)格普遍昂貴。因此作者使用LabVIEW的DAQmx工具包,產(chǎn)生虛擬高頻信號(hào)。
DAQmx產(chǎn)生的虛擬高頻信號(hào)可調(diào)參數(shù)多,且能夠產(chǎn)生諸如正弦波,方波,鋸齒波等波形。作者使用不同參數(shù)的信號(hào),以使得結(jié)果更具有說服力。例如:頻率范圍:500 M~10 GHz,分辨率為10 Hz。
4.2 LabVIEW進(jìn)行采集及顯示
先在DAQmx定時(shí)VI中設(shè)定好采樣模式及采樣率,這里作者設(shè)定的是連續(xù)采樣模式和1 000的采樣率;接著在DAQmx讀取VI中,作者設(shè)定為模擬多通道多采樣2D DBL,超時(shí)設(shè)為2;最后將DAQmx開始任務(wù)VI、DAQmx停止任務(wù)VI、DAQmx清除任務(wù)VI與前面兩個(gè)VI連接,這樣就完成了基本的采集設(shè)計(jì)。將產(chǎn)生的模擬信號(hào)直接連接到波形圖表VI可以很直觀的看到波形。
前面板設(shè)計(jì)如圖2所示。
其主要部分是顯示采集波形的圖表,和內(nèi)部產(chǎn)生波形數(shù)據(jù)的圖表。表盤和其左方的波形圖是均方差的相關(guān)表述,數(shù)字控件描述的是均方差和相關(guān)系數(shù)的值。
相比起其他的信號(hào)比較法,如:基線信號(hào)比較法、信噪比和有效數(shù)據(jù)位比較法等,采用均方差來比較波形顯得更加的簡(jiǎn)便,可靠。而相關(guān)性揭示了2個(gè)波形的相似度,即是2個(gè)數(shù)據(jù)間的線性關(guān)系。
采集的數(shù)據(jù)在LabVIEW中被保存為一個(gè)txt文檔,這只需要將數(shù)據(jù)連線到寫入文本文件VI即可。保存的數(shù)據(jù)可以被用來進(jìn)行處理、分析或者是其它用途,同時(shí)這也提供了備份以防止不可遇見的事故發(fā)生。
4.3 MATLAB進(jìn)行處理
MATLAB被用來執(zhí)行數(shù)據(jù)計(jì)算來比較2個(gè)波形。
4.3.1 均方差
均方差的代碼實(shí)現(xiàn)了將2個(gè)波形數(shù)據(jù)按照矩陣的形式代入方程中,然后將所得結(jié)果返回給LabVIEW并顯示出來。均方差的公式由下式給出
4.3.2 相關(guān)系數(shù)
相關(guān)系數(shù)可以用以下命令實(shí)現(xiàn)
R=corrcoef(X) (2)
這條命令將2個(gè)矩陣(一個(gè)是采集得到的,一個(gè)是內(nèi)部生成的)建立相關(guān)性,并輸出計(jì)算得到的相關(guān)系數(shù)。
相關(guān)系數(shù)的公式如下
4.3.3 參考信號(hào)
參考信號(hào)用來與采集得到的信號(hào)數(shù)據(jù)進(jìn)行均方差與相關(guān)性的對(duì)比。它由MATLAB產(chǎn)生,因?yàn)镸ATLAB擁有豐富的數(shù)學(xué)函數(shù)庫及強(qiáng)大的各種工具箱(ToolBox),這就使得作者可以很方便靈活的產(chǎn)生各種參數(shù)的不同信號(hào),而且使用MATLAB能得到較高的采樣率,并且對(duì)信號(hào)的處理也比較簡(jiǎn)單,同時(shí)也避免了將參考信號(hào)引入MATLAB script模塊的麻煩。
5 3種方法
5.1 第一種
為了實(shí)現(xiàn)第一種方法,作者運(yùn)用LabVIEW的DAO工具包,設(shè)定好產(chǎn)生虛擬信號(hào)的參數(shù),再將信號(hào)采集回來,并將數(shù)據(jù)保存為一個(gè)txt文件。將這個(gè)txt文件引入MATLAB,并與MATLAB內(nèi)部產(chǎn)生的信號(hào)進(jìn)行對(duì)比,通過計(jì)算得到均方差和相關(guān)系數(shù)。
5.2 第二種方法
第二種方法只使用LabVIEW一個(gè)軟件,首先采集信號(hào)數(shù)據(jù)并保存,接著使用LabVIEW的MATLAB script模塊產(chǎn)生內(nèi)部信號(hào),最后將倆信號(hào)對(duì)比并計(jì)算均方差和相關(guān)系數(shù),如圖3所示。
5.3 第三種方法
第三種方法借助LabVIEW內(nèi)部的Math Script RT來完成,具體步驟和第二種方法類似,如圖4所示。
6 結(jié)果分析
實(shí)驗(yàn)環(huán)境為CPU:Intel Pentium D 2.8 GHz,內(nèi)存:1G,顯卡:GT220。系統(tǒng):Windows XP。
產(chǎn)生高頻信號(hào)為1 GHz,深度為1 024 M,重復(fù)實(shí)驗(yàn)10次。
對(duì)于一些小誤差,如校準(zhǔn)誤差,幾乎可以忽略不計(jì),因?yàn)槎际窃谕粋€(gè)環(huán)境下試驗(yàn)完成的。因此作者集中分析方法的可行性,然后對(duì)比3種方法,最后得出結(jié)論哪一種是最好的。
6.1 引入txt文件
這種方法非常耗時(shí)。首先,使用LabVIEW采集得到數(shù)據(jù)并將之保存為一個(gè)txt文件,然后再將這個(gè)文件引入MATLAB。即是用戶需要在打開一個(gè)軟件后再打開另外一個(gè)軟件來完成操作,這是很繁瑣的。
從開發(fā)者的角度來說,這種方法也許很簡(jiǎn)單或者說是不那么復(fù)雜。但是,這種方法可行性最低。因?yàn)槌撕臅r(shí),它還需要對(duì)這兩種軟件有一定的認(rèn)識(shí),因此花在查找文獻(xiàn)上的時(shí)間也相應(yīng)的增多了。
另外,這種方法增加了電腦的負(fù)擔(dān),畢竟是開了兩個(gè)程序。如果你使用的是一臺(tái)老電腦的話,那么這可能會(huì)降低你的工作效率。
綜上,作者不建議使用這種方法。
6.2 使用MATLAB script
這種方法經(jīng)過驗(yàn)證比上一種要好。因?yàn)橛脩舨槐卮蜷_兩個(gè)應(yīng)用程序來執(zhí)行程序,所以相對(duì)的比較可行。
但是,這種方法也需要安裝MATLAB軟件,才能在LabVIEW中調(diào)用MATLAB script模塊。這樣就導(dǎo)致了程序執(zhí)行的緩慢,因?yàn)橛脩舯仨毜却欢螘r(shí)間讓計(jì)算機(jī)進(jìn)行切換計(jì)算。
除了操作性的難題,這種方法最主要的問題還是不能夠?qū)崟r(shí)計(jì)算。采集的數(shù)據(jù)必須先保存為矩陣的形式,然后再調(diào)用MATLAB script模塊進(jìn)行處理。這樣就不僅浪費(fèi)了時(shí)間,而且還需要另外的算法來臨時(shí)保存數(shù)據(jù)。
6.3 使用Math Script RT
這種方法使用了內(nèi)嵌的Math Script模塊,它集合了LabVIEW和MATLAB的優(yōu)點(diǎn),而且還不需要安裝另外的軟件。Math Script模塊沒有必要調(diào)用MATLAB軟件,因?yàn)樗旧砭湍軌蜃R(shí)別800多條命令,也就是說使用。Math Script模塊的話就不需要再安裝MATLAB軟件了。
相比上一種方法,最主要的優(yōu)勢(shì)除了運(yùn)行快還有就是能夠進(jìn)行實(shí)時(shí)處理。因?yàn)槠洳恍枰獙?duì)數(shù)據(jù)進(jìn)行臨時(shí)的數(shù)據(jù)存儲(chǔ),也沒有丟失實(shí)時(shí)的信息,這就使得它的運(yùn)行速度是最快的。測(cè)試結(jié)果如圖5所示。
7 結(jié)論
為了最優(yōu)化系統(tǒng)的性能,本文提倡對(duì)不同目的使用不同的軟件。使用LabVIEW進(jìn)行數(shù)據(jù)采集,運(yùn)用MATLAB進(jìn)行數(shù)據(jù)處理,這是很多項(xiàng)目的需要,也是很多程序員的需要。文中使用3種方法將LabVIEW與MATLAB的特性相結(jié)合:引入txt文件到MATLAB,使用MATLAB script模塊,使用Math Script RT。通過分析得到的結(jié)果,證實(shí)了使用Math Script RT無論在速度和可行性方面都是最好的。