《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > LabVIEW中調(diào)用MATLAB進(jìn)行信號(hào)處理方法研究
LabVIEW中調(diào)用MATLAB進(jìn)行信號(hào)處理方法研究
2014年微型機(jī)與應(yīng)用第10期
吳小紅
甘肅政法學(xué)院 公安技術(shù)學(xué)院,甘肅 蘭州
摘要: 系統(tǒng)是由若干互相有著某種聯(lián)系的單元組成的一個(gè)能夠完成某種功能的整體。信號(hào)作用于某系統(tǒng)的響應(yīng)如何,需要以某種方式去分析。系統(tǒng)分析需要經(jīng)過(guò)3個(gè)過(guò)程:(1)建模,以理論為基礎(chǔ),對(duì)所要研究的對(duì)象創(chuàng)建一個(gè)數(shù)學(xué)模型;(2)分析該模型;(3)做出合理的物理解釋。分析過(guò)程很關(guān)鍵,方式方法很多,工具也很多,MATLAB和LabVIEW是常用的兩個(gè)軟件分析平臺(tái)。
Abstract:
Key words :

  摘  要MATLABLabVIEW是目前流行于工程技術(shù)領(lǐng)域的工具軟件。LabVIEW的優(yōu)點(diǎn)是能夠?qū)⑿盘?hào)順利地采集進(jìn)來(lái)并進(jìn)行自動(dòng)化分析和處理,但其分析信號(hào)能力有局限和缺陷。MATLAB分析計(jì)算能力很強(qiáng),但與外部設(shè)備交換信息能力卻很差。將二者結(jié)合起來(lái)混合編程,取長(zhǎng)補(bǔ)短,充分發(fā)揮各自的優(yōu)勢(shì),可設(shè)計(jì)出功能比較完善的信號(hào)處理系統(tǒng)。為此,研究了在LabVIEW中調(diào)用MATLAB進(jìn)行信號(hào)處理的方法。詳述了各種方法的使用流程、注意事項(xiàng),并總結(jié)了各種方法使用的不同領(lǐng)域和優(yōu)缺點(diǎn)。

  關(guān)鍵詞: MATLAB;LabVIEW;信號(hào)處理;數(shù)據(jù)采集;動(dòng)態(tài)鏈接庫(kù)

  系統(tǒng)是由若干互相有著某種聯(lián)系的單元組成的一個(gè)能夠完成某種功能的整體。信號(hào)作用于某系統(tǒng)的響應(yīng)如何,需要以某種方式去分析。系統(tǒng)分析需要經(jīng)過(guò)3個(gè)過(guò)程:(1)建模,以理論為基礎(chǔ),對(duì)所要研究的對(duì)象創(chuàng)建一個(gè)數(shù)學(xué)模型;(2)分析該模型;(3)做出合理的物理解釋。分析過(guò)程很關(guān)鍵,方式方法很多,工具也很多,MATLAB和LabVIEW是常用的兩個(gè)軟件分析平臺(tái)。

  MATLAB的科學(xué)計(jì)算能力、圖像處理和數(shù)值分析能力都比較強(qiáng)。LabVIEW是用于編制虛擬儀器的圖形化編程工具。自然界各種信號(hào)信息的監(jiān)測(cè),機(jī)器、車輛等故障的診斷,還有許多即時(shí)動(dòng)態(tài)信號(hào)的監(jiān)控,需要先將信號(hào)盡量不失真地采集進(jìn)來(lái),這一點(diǎn)LabVIEW很容易完成。對(duì)采集信號(hào)作用于系統(tǒng)模型復(fù)雜分析計(jì)算最好用MATLAB去完成。為了直觀、方便觀察,可用LabVIEW做一個(gè)界面[1]。

  1 MATLAB在LabVIEW中調(diào)用的實(shí)現(xiàn)

  LabVIEW和MATLAB混合編程的實(shí)現(xiàn)主要有以下幾種方法。

  1.1 調(diào)用MATLAB script節(jié)點(diǎn)算法

  LabVIEW提供了各類腳本節(jié)點(diǎn)與外部實(shí)現(xiàn)通信和交換信息。LabVIEW中可通過(guò)MATLAB script節(jié)點(diǎn)調(diào)用MATLAB的腳本程序(即M文件)。

  1.1.1 調(diào)用MATLAB script節(jié)點(diǎn)過(guò)程

  從LabVIEW中函數(shù)選版選用過(guò)程為:函數(shù)→數(shù)學(xué)→腳本與公式→腳本節(jié)點(diǎn)→MATLAB script節(jié)點(diǎn)。拖曳出節(jié)點(diǎn),放在程序框圖面板中,用工具選版按需要調(diào)節(jié)大??;按程序需要為該節(jié)點(diǎn)添加輸入輸出變量。LabVIEW可通過(guò)輸入變量向腳本中輸入所要處理的信號(hào),運(yùn)行腳本后的結(jié)果通過(guò)輸出變量送到LabVIEW的輸出控件,顯示出處理的數(shù)據(jù)或者波形圖,直觀清楚,就像實(shí)際的儀器面板一樣。具體方法為:右鍵單擊腳本邊框,從彈出的菜單中選擇添加輸入或輸出,隨即在邊框出現(xiàn)一個(gè)小方框,一般習(xí)慣輸入在左邊,輸出在右邊。添加之后,各變量需要命名,用Labeling工具依據(jù)腳本程序中的變量依次命名,注意選擇合適的數(shù)據(jù)類型,否則運(yùn)行會(huì)出錯(cuò)[2]。

  1.1.2 向MATLAB腳本節(jié)點(diǎn)輸入腳本程序

  向MATLAB腳本節(jié)點(diǎn)輸入腳本程序有兩種方法:

  (1)用Operating或Labeling工具直接向MATLAB腳本節(jié)點(diǎn)編寫腳本程序。

  (2)從MATLAB中導(dǎo)入??梢韵仍贛ATLAB環(huán)境下編程運(yùn)行調(diào)試好程序后,再用右鍵單擊MATLAB腳本節(jié)點(diǎn),打開快捷菜單,然后選擇Import,從對(duì)話框中選擇需要導(dǎo)入的文件即可[3]。

  1.1.3 保存MATLAB腳本程序

  右鍵單擊MATLAB腳本節(jié)點(diǎn),從打開的菜單中選擇Export,在打開的Name the script對(duì)話框中輸入需要保存的文件名,點(diǎn)擊save,以MATLAB文本文件擴(kuò)展名.m保存腳本程序[3]。

  1.1.4 調(diào)用過(guò)程的注意事項(xiàng)

  在LabVIEW中調(diào)用MATLAB要注意以下幾點(diǎn):

  (1)LabVIEW是通過(guò)Activex技術(shù)來(lái)調(diào)用MATLAB腳本節(jié)點(diǎn)的,MATLAB腳本只適用于Windows操作系統(tǒng)。

  (2)使用MATLAB腳本時(shí)需要調(diào)用MATLAB服務(wù)器,所以計(jì)算機(jī)上要裝有MATLAB 6.5以上的版本。

  (3)調(diào)用調(diào)試過(guò)程中的數(shù)據(jù)類型要匹配,否則運(yùn)行會(huì)出錯(cuò)[4]。

  這種方法不用復(fù)雜的編程,操作也簡(jiǎn)單,對(duì)于初學(xué)者比較容易掌握,但對(duì)計(jì)算機(jī)操作系統(tǒng)要求較高,兩個(gè)軟件都需要正確全面安裝各個(gè)組件,否則無(wú)法正常調(diào)用。

  1.2 應(yīng)用COM 組件調(diào)用MATLAB

  MATLAB中M語(yǔ)言開發(fā)的算法可以用COM技術(shù)自動(dòng)轉(zhuǎn)變?yōu)楠?dú)立的COM組件對(duì)象,可在任何支持COM對(duì)象的應(yīng)用程序中使用。LabVIEW在其相關(guān)的函數(shù)選版→互連接口→ActiveX模塊中提供了一組與該組件操作相關(guān)的子VI,實(shí)現(xiàn)對(duì)COM對(duì)象具體的操作。

  這種方法適用于規(guī)模較大的應(yīng)用程序,編程有些復(fù)雜,要求使用者對(duì)MATLAB工具包和LabVIEW的子程序應(yīng)用特別熟練[5]。

  1.3 應(yīng)用動(dòng)態(tài)鏈接庫(kù)技術(shù)調(diào)用MATLAB

  在LabVIEW編程界面下利用動(dòng)態(tài)鏈接庫(kù)技術(shù)調(diào)用MATLAB,步驟為:

  (1)在MATLAB編程界面下用m文件翻譯器Matcom將源文件翻譯為cpp代碼,同時(shí)編譯為dll文件。

  (2)在LabVIEW編程界面下用調(diào)用庫(kù)函數(shù)CLF(CallLibrary Function)節(jié)點(diǎn),進(jìn)行動(dòng)態(tài)鏈接庫(kù)函數(shù)的調(diào)用。

  這種方法適合對(duì)C語(yǔ)言等編程很熟練的高手,因?yàn)樵贚abVIEW動(dòng)態(tài)鏈接庫(kù)需要用C語(yǔ)言等編程。

  2 LabVIEW中調(diào)用MATLAB進(jìn)行信號(hào)處理的實(shí)現(xiàn)

  2.1 信號(hào)分析的處理過(guò)程

  LabVIEW與MATLAB協(xié)同工作,在分析處理信號(hào)過(guò)程中,LabVIEW負(fù)責(zé)數(shù)據(jù)采集,同時(shí)設(shè)計(jì)用戶圖形界面;MATLAB在后臺(tái)主要完成大型計(jì)算、數(shù)據(jù)分析、細(xì)節(jié)處理,提供給LabVIEW調(diào)用,其工作過(guò)程如圖1所示。

004.jpg

  2.2 調(diào)用MATLAB script節(jié)點(diǎn)法對(duì)信號(hào)進(jìn)行濾波

  實(shí)際的信號(hào)很容易被干擾,特別是傳感器輸出的模擬信號(hào),如汽車油門開度傳感器、水溫傳感器、真空度傳感器等。采集到原始信號(hào)后,必須對(duì)其進(jìn)行濾除處理,除去干擾信號(hào),才能正確使用。

  混有干擾的信號(hào)直接濾波效果較差,在時(shí)域上也很難看出是什么特征的,但如果變換到頻域之后,就很容易看出特征了。因此,將原始有干擾的信號(hào)先進(jìn)行FFT變換,將時(shí)域變換到頻域,再進(jìn)行濾波處理,最后再反變換還原信號(hào),其效果很好。LabVIEW信號(hào)處理模塊有不少濾波節(jié)點(diǎn)可以完成濾波功能,圖2就是用LabVIEW處理信號(hào)的程序框圖,可以看到過(guò)程比較復(fù)雜,處理后顯示的信號(hào)也較差。

005.jpg

  上述過(guò)程在MATLAB中由幾個(gè)函數(shù)運(yùn)算就可完成,圖3是LabVIEW調(diào)用MATLAB script節(jié)點(diǎn),對(duì)信號(hào)變換濾波處理的程序框圖。按照MATLAB程序中要求的信息分別在腳本節(jié)點(diǎn)外框上添加輸入變量和輸出變量(一般習(xí)慣把輸入變量放在左邊,輸出變量放在右邊),同時(shí)修改數(shù)據(jù)類型,使二者匹配。將LabVIEW采集到的信息送給MATLAB script節(jié)點(diǎn),導(dǎo)入事先在MATLAB中調(diào)試好的程序,在LabVIEW中運(yùn)行即可。輸出信號(hào)可通過(guò)輸出變量用相應(yīng)的顯示控件在前面板顯示,處理過(guò)程中許多需要設(shè)定的參數(shù)都可以在前面板以按鈕方式設(shè)置,數(shù)據(jù)可任意改變,就像一個(gè)實(shí)際儀器一樣,操作簡(jiǎn)單、數(shù)據(jù)可靠。該程序還可以打包成可安裝文件,在任何平臺(tái)上使用。

007.jpg

  圖4是程序運(yùn)行后顯示的波形。由圖4(a)、(b)可知,原始信號(hào)是一個(gè)混雜有干擾的信號(hào),其頻譜在低頻處有一個(gè)模值特別高的點(diǎn),這一點(diǎn)就是原信號(hào)的數(shù)據(jù),這是需要保留的點(diǎn);而在高頻部分還有很多模值相對(duì)較小的點(diǎn),這些就是干擾信號(hào),是要去除的數(shù)據(jù)。對(duì)數(shù)據(jù)進(jìn)行低通濾波,把高頻的信號(hào)去掉,得到濾波后信號(hào)的頻譜圖,如圖4(c)、(d)所示。由圖可知,高頻部分的雜波已經(jīng)被清除。如要了解時(shí)域的波形上有什么變化,可以對(duì)頻域信號(hào)進(jìn)行反傅里葉變換,得到經(jīng)過(guò)低通濾波后的時(shí)域波形,恢復(fù)后的波形是去除干擾后很好的正弦波。

008.jpg

  2.3 調(diào)用MATLAB script節(jié)點(diǎn)法對(duì)信號(hào)進(jìn)行濾波程序

  程序如下:

  close all;%先關(guān)閉所有圖片

  Adc=2;%直流分量幅度

  Fs=256;%采樣頻率(Hz)

  N=256;%采樣點(diǎn)數(shù)

  t=0:1/Fs:N/Fs;%采樣時(shí)刻

  plot(t,S);%顯示原始信號(hào)

  title('原始信號(hào)');

  hold on

  figure;

  Y=fft(S,256);%對(duì)信號(hào)進(jìn)行256點(diǎn)的FFT

  Ayy=abs(Y);%取模

  plot(Ayy);%顯示取模后的FFT信號(hào)

  title('原始信號(hào)頻譜圖');

  hold on

  figure;

  RY=real(Y);%提取FFT后數(shù)據(jù)的實(shí)部

  IY=imag(Y);%提取FFT后數(shù)據(jù)的虛部

  RY(10:N-10)=0;%理想低通濾波

  IY(10:N-10)=0;

  plot(RY);

  title('濾波后信號(hào)的頻譜圖');

  hold on

  figure;

  YY=RY+1i*IY;%濾波后重新組合實(shí)部和虛部

  SS=real(ifft(YY));%進(jìn)行反傅里葉變換

  figure

  plot(SS,'r');%顯示濾波后的信號(hào),

  并與原始信號(hào)進(jìn)行對(duì)比

  title('濾波后的信號(hào)');

  hold on

  plot(S)

  MATLAB具有強(qiáng)大的數(shù)值分析和處理能力,還擁有眾多的專業(yè)工具箱,因此在LabVIEW中調(diào)用MATLAB來(lái)解決問(wèn)題過(guò)程簡(jiǎn)單易行,并能夠擴(kuò)展LabVIEW的功能,極大地拓寬了虛擬儀器的開發(fā)范圍。將LabVIEW與MATLAB有機(jī)地結(jié)合起來(lái),在大型的測(cè)試系統(tǒng)與仿真過(guò)程中是非常有利的。

  參考文獻(xiàn)

  [1] 劉衛(wèi)國(guó),陳昭平.MATLAB程序設(shè)計(jì)與應(yīng)用[M].北京:高等教育出版社,2002.

  [2] 劉君華.基于LabVIEW的虛擬儀器設(shè)計(jì)與應(yīng)用[M].北京:高等教育出版社,2002.

  [3] 石博強(qiáng).LabVIEW6.1編程技術(shù)實(shí)用教程[M].北京:中國(guó)鐵道出版社,2002.

  [4] BISHOP R H.LabVIEW 6i實(shí)用教程[M].喬瑞萍,譯.北京:電子工業(yè)出版社,2002.

  [5] 王沫然.MATLAB與科學(xué)計(jì)算(第二版)[M].北京:電子工業(yè)出版社,2003.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。