宋凡峰 吳廣祥
【摘 要】MATLAB是一種高效率的工程計(jì)算軟件,LabVIEW是一種高性能的圖形化虛擬儀器編程軟件,本文首先分析了幾種LabVIEW與MATLAB混合編程技術(shù)的優(yōu)缺點(diǎn),然后在LabVIEW中通過MATLAB Script節(jié)點(diǎn)調(diào)用MATLAB,利用MATLAB圖像處理工具箱中的函數(shù)進(jìn)行圖像處理。
【關(guān)鍵詞】虛擬儀器;LabVIEW;MATLAB Script
MATLAB是一款強(qiáng)大的科學(xué)計(jì)算軟件,它集數(shù)值分析、矩陣運(yùn)算、信號處理和圖形顯示于一體,針對不同領(lǐng)域的應(yīng)用,具有信號處理、圖像處理、神經(jīng)網(wǎng)絡(luò)等幾十個(gè)專用工具箱;MATLAB缺點(diǎn)在于界面開發(fā)能力較差,并且數(shù)據(jù)輸入、網(wǎng)絡(luò)通信、硬件控制等方面都比較繁瑣。
虛擬儀器是是一個(gè)按照儀器需求組織的數(shù)據(jù)采集系統(tǒng),LabVIEW是開發(fā)虛擬儀器的、基于圖形化編程G語言的高效軟件,它圖形界面豐富,可以容易地制作各種界面。但在對各種算法的支持方面,LabVIEW的工具箱非常有限,這就限制了大型應(yīng)用程序的快速開發(fā)。
如果能把二者的優(yōu)點(diǎn)想整合,利用混合編程技術(shù)在LabVIEW中調(diào)用和操作MATLAB,就可以相互補(bǔ)充,充分發(fā)揮兩者的優(yōu)勢,開發(fā)出高效率的虛擬儀器。
一、LabVIEW中調(diào)用和操作MATLAB的方法
LabVIEW和MATLAB混合編程的實(shí)現(xiàn)主要有以下幾種方法。
(一)利用MATLAB Script節(jié)點(diǎn)調(diào)用MATLAB算法
在MATLAB Script節(jié)點(diǎn)中,用戶可以編輯MATLAB程序,也可以直接調(diào)入已經(jīng)存在的MATLAB程序,并在LabVIEW環(huán)境下運(yùn)行。用戶可以很方便地在自己的LabVIEW應(yīng)用程序中使用MATLAB編寫的算法和功能豐富的工具箱。
MATLAB Script節(jié)點(diǎn)對輸入、輸出數(shù)據(jù)的類型有明確的要求。目前兩者之間的數(shù)據(jù)通信僅支持Real、Real Vector、Real Matrix、Complex、Vector Complex、Matrix六種格式的數(shù)據(jù),而且還必須根據(jù)具體情況進(jìn)行選擇。
用該方法實(shí)現(xiàn)LabVIEW與MATLAB的混合編程簡單、實(shí)用,其缺點(diǎn)是沒有脫離MATLAB的環(huán)境,而只是將它在后臺執(zhí)行,所以這種方法必須在計(jì)算機(jī)中安裝有MATLAB。
(二)利用COM組件調(diào)用MATLAB算法
COM技術(shù)的核心就是二進(jìn)制接口規(guī)范,此規(guī)范獨(dú)立于編程語言和操作系統(tǒng)。從MATLAB6.5開始增加MATLAB COM Builder功能,它可以幫助用戶將用M語言開發(fā)的算法自動(dòng)、快速地轉(zhuǎn)變?yōu)楠?dú)立的COM組件對象。通過COM組件,可以同其他用戶共享已經(jīng)開發(fā)的算法,并且可以免費(fèi)地隨同COM應(yīng)用程序發(fā)布MATLAB算法。
LabVIEW在其Function》Communication》ActiveX模塊中提供了一組與組件操作相關(guān)的子VI,其中Automation Open節(jié)點(diǎn)打開一個(gè)與COM對象相連的Refnum,然后該Refnum 能夠被傳遞給模塊中的其他函數(shù)節(jié)點(diǎn),從而實(shí)現(xiàn)具體的COM對象操作,最后Close Automation節(jié)點(diǎn)關(guān)閉Refnum。
利用COM技術(shù),MATLAB Builder for COM能夠?qū)⒌退賵?zhí)行的M文件編譯成二進(jìn)制的COM組件,嵌入到LabVIEW程序中。這種方法對于規(guī)模較大,性能、速度、內(nèi)存管理要求較高的LabVIEW應(yīng)用程序來說,是非常有利的。
(三)利用動(dòng)態(tài)鏈接庫技術(shù)
動(dòng)態(tài)鏈接庫(DLL)是基于Windows程序設(shè)計(jì)的一個(gè)重要的組成部分。在LabVIEW下利用DLL技術(shù)調(diào)用MATLAB,首先是用m文件翻譯器Matcom將MATLAB的,源文件翻譯為cpp代碼,并編譯為dll文件;然后用LabVIEW提供的調(diào)用庫函數(shù)(Call Library Function,CLF)節(jié)點(diǎn),在LabVIEW中實(shí)現(xiàn)DLL函數(shù)的調(diào)用。
該方法必須安裝Matcom,但是Matcom對class類和圖形窗口的支持不夠,使得圖像處理的一些功能不能使用,無法畫出像MATLAB中那樣精細(xì)的圖像。
比較以上三種方法可知,利用動(dòng)態(tài)鏈接庫的方法不適合調(diào)用MATLAB進(jìn)行圖像處理;利用COM組件可以完成調(diào)用MATLAB圖像處理的功能,但比較繁瑣,適合于大型系統(tǒng)設(shè)計(jì);利用MATLAB Script節(jié)點(diǎn)可以方便地完成MATLAB圖像處理功能,滿足一般需求,開發(fā)出小型高效的虛擬儀器系統(tǒng)。
二、LabVIEW與MATLAB混合編程圖像處理的實(shí)現(xiàn)
LabVIEW的每個(gè)程序就是一個(gè)VI,它包括前面板和框圖程序窗口兩部分。在LabVIEW中利用MATLAB Script實(shí)現(xiàn)MATLAB圖像處理方法為:在框圖程序窗口中,通過Functions Palette- Mathematics-Formula-MATLAB Script,打開MATLAB Script節(jié)點(diǎn),可以直接在其框圖中寫入MATLAB圖像處理程序,也可以在框圖中點(diǎn)擊右鍵,在彈出菜單中選擇“import”,在對話框中選擇要導(dǎo)入的圖像處理M程序文件即完成了節(jié)點(diǎn)程序的寫入。一般情況下推薦使用后者,在MATLAB環(huán)境下編譯通過的M文件導(dǎo)入節(jié)點(diǎn)可以節(jié)省調(diào)試時(shí)間,提高開發(fā)效率。在框圖內(nèi)書寫或調(diào)用文件時(shí)要保證每一條語句的完整性,或者完整寫在一行,或者分行要有連接符,否則,程序運(yùn)行會(huì)產(chǎn)生錯(cuò)誤。MATLAB Script節(jié)點(diǎn)的參數(shù)傳遞可通過添加輸入輸出完成。在節(jié)點(diǎn)邊框上單擊鼠標(biāo)右鍵,在彈出式菜單中選擇“Add Input”或“Add Output”,注意數(shù)字圖像是以矩陣格式存儲(chǔ)的,所以輸入輸出圖像的數(shù)據(jù)格式選擇為Real Matrix。
三、結(jié)束語
通過LabVIEW與MATLAB混合編程,二者揚(yáng)長避短,優(yōu)秀的LabVIEW圖形化編程語言與強(qiáng)大的MATLAB工程計(jì)算語言結(jié)合,必將大大提高虛擬儀器的開發(fā)效率。
參考文獻(xiàn):
[1]楊樂平,李海濤,楊磊.LabVIEW程序設(shè)計(jì)與應(yīng)用[M].北京:電子工業(yè)出版社,2005.
[2]裴鋒,汪翠英,李資榮.基于LabVIEW的虛擬儀器算法解決方案[J].自動(dòng)化儀表,2005,26(8):63-65.
作者簡介:
宋凡峰(1981-),男,山東濟(jì)寧人,山東水利職業(yè)學(xué)院教師,主要從事電氣工程、自動(dòng)檢測等方面的教學(xué)與研究。