摘 要: MATLAB和LabVIEW是目前流行于工程技術領域的工具軟件,。LabVIEW的優(yōu)點是能夠將信號順利地采集進來并進行自動化分析和處理,,但其分析信號能力有局限和缺陷。MATLAB分析計算能力很強,,但與外部設備交換信息能力卻很差,。將二者結合起來混合編程,取長補短,,充分發(fā)揮各自的優(yōu)勢,,可設計出功能比較完善的信號處理系統(tǒng)。為此,,研究了在LabVIEW中調用MATLAB進行信號處理的方法,。詳述了各種方法的使用流程、注意事項,,并總結了各種方法使用的不同領域和優(yōu)缺點,。
關鍵詞: MATLAB;LabVIEW,;信號處理,;數(shù)據采集;動態(tài)鏈接庫
系統(tǒng)是由若干互相有著某種聯(lián)系的單元組成的一個能夠完成某種功能的整體,。信號作用于某系統(tǒng)的響應如何,,需要以某種方式去分析。系統(tǒng)分析需要經過3個過程:(1)建模,,以理論為基礎,,對所要研究的對象創(chuàng)建一個數(shù)學模型;(2)分析該模型,;(3)做出合理的物理解釋,。分析過程很關鍵,方式方法很多,,工具也很多,,MATLAB和LabVIEW是常用的兩個軟件分析平臺。
MATLAB的科學計算能力,、圖像處理和數(shù)值分析能力都比較強,。LabVIEW是用于編制虛擬儀器的圖形化編程工具。自然界各種信號信息的監(jiān)測,,機器,、車輛等故障的診斷,還有許多即時動態(tài)信號的監(jiān)控,需要先將信號盡量不失真地采集進來,,這一點LabVIEW很容易完成,。對采集信號作用于系統(tǒng)模型復雜分析計算最好用MATLAB去完成。為了直觀,、方便觀察,,可用LabVIEW做一個界面[1],。
1 MATLAB在LabVIEW中調用的實現(xiàn)
LabVIEW和MATLAB混合編程的實現(xiàn)主要有以下幾種方法。
1.1 調用MATLAB script節(jié)點算法
LabVIEW提供了各類腳本節(jié)點與外部實現(xiàn)通信和交換信息,。LabVIEW中可通過MATLAB script節(jié)點調用MATLAB的腳本程序(即M文件),。
1.1.1 調用MATLAB script節(jié)點過程
從LabVIEW中函數(shù)選版選用過程為:函數(shù)→數(shù)學→腳本與公式→腳本節(jié)點→MATLAB script節(jié)點。拖曳出節(jié)點,,放在程序框圖面板中,,用工具選版按需要調節(jié)大小,;按程序需要為該節(jié)點添加輸入輸出變量,。LabVIEW可通過輸入變量向腳本中輸入所要處理的信號,運行腳本后的結果通過輸出變量送到LabVIEW的輸出控件,,顯示出處理的數(shù)據或者波形圖,,直觀清楚,就像實際的儀器面板一樣,。具體方法為:右鍵單擊腳本邊框,,從彈出的菜單中選擇添加輸入或輸出,隨即在邊框出現(xiàn)一個小方框,,一般習慣輸入在左邊,,輸出在右邊。添加之后,,各變量需要命名,,用Labeling工具依據腳本程序中的變量依次命名,注意選擇合適的數(shù)據類型,,否則運行會出錯[2],。
1.1.2 向MATLAB腳本節(jié)點輸入腳本程序
向MATLAB腳本節(jié)點輸入腳本程序有兩種方法:
(1)用Operating或Labeling工具直接向MATLAB腳本節(jié)點編寫腳本程序。
(2)從MATLAB中導入,??梢韵仍贛ATLAB環(huán)境下編程運行調試好程序后,再用右鍵單擊MATLAB腳本節(jié)點,,打開快捷菜單,,然后選擇Import,從對話框中選擇需要導入的文件即可[3],。
1.1.3 保存MATLAB腳本程序
右鍵單擊MATLAB腳本節(jié)點,,從打開的菜單中選擇Export,在打開的Name the script對話框中輸入需要保存的文件名,點擊save,,以MATLAB文本文件擴展名.m保存腳本程序[3]。
1.1.4 調用過程的注意事項
在LabVIEW中調用MATLAB要注意以下幾點:
(1)LabVIEW是通過Activex技術來調用MATLAB腳本節(jié)點的,,MATLAB腳本只適用于Windows操作系統(tǒng),。
(2)使用MATLAB腳本時需要調用MATLAB服務器,,所以計算機上要裝有MATLAB 6.5以上的版本。
(3)調用調試過程中的數(shù)據類型要匹配,,否則運行會出錯[4],。
這種方法不用復雜的編程,操作也簡單,,對于初學者比較容易掌握,,但對計算機操作系統(tǒng)要求較高,兩個軟件都需要正確全面安裝各個組件,,否則無法正常調用,。
1.2 應用COM 組件調用MATLAB
MATLAB中M語言開發(fā)的算法可以用COM技術自動轉變?yōu)楠毩⒌腃OM組件對象,可在任何支持COM對象的應用程序中使用,。LabVIEW在其相關的函數(shù)選版→互連接口→ActiveX模塊中提供了一組與該組件操作相關的子VI,,實現(xiàn)對COM對象具體的操作。
這種方法適用于規(guī)模較大的應用程序,,編程有些復雜,,要求使用者對MATLAB工具包和LabVIEW的子程序應用特別熟練[5]。
1.3 應用動態(tài)鏈接庫技術調用MATLAB
在LabVIEW編程界面下利用動態(tài)鏈接庫技術調用MATLAB,,步驟為:
(1)在MATLAB編程界面下用m文件翻譯器Matcom將源文件翻譯為cpp代碼,,同時編譯為dll文件。
(2)在LabVIEW編程界面下用調用庫函數(shù)CLF(CallLibrary Function)節(jié)點,,進行動態(tài)鏈接庫函數(shù)的調用,。
這種方法適合對C語言等編程很熟練的高手,因為在LabVIEW動態(tài)鏈接庫需要用C語言等編程,。
2 LabVIEW中調用MATLAB進行信號處理的實現(xiàn)
2.1 信號分析的處理過程
LabVIEW與MATLAB協(xié)同工作,,在分析處理信號過程中,LabVIEW負責數(shù)據采集,,同時設計用戶圖形界面,;MATLAB在后臺主要完成大型計算、數(shù)據分析,、細節(jié)處理,,提供給LabVIEW調用,其工作過程如圖1所示,。
2.2 調用MATLAB script節(jié)點法對信號進行濾波
實際的信號很容易被干擾,,特別是傳感器輸出的模擬信號,如汽車油門開度傳感器,、水溫傳感器,、真空度傳感器等。采集到原始信號后,必須對其進行濾除處理,,除去干擾信號,,才能正確使用。
混有干擾的信號直接濾波效果較差,,在時域上也很難看出是什么特征的,,但如果變換到頻域之后,就很容易看出特征了,。因此,,將原始有干擾的信號先進行FFT變換,將時域變換到頻域,,再進行濾波處理,,最后再反變換還原信號,其效果很好,。LabVIEW信號處理模塊有不少濾波節(jié)點可以完成濾波功能,,圖2就是用LabVIEW處理信號的程序框圖,可以看到過程比較復雜,,處理后顯示的信號也較差,。
上述過程在MATLAB中由幾個函數(shù)運算就可完成,圖3是LabVIEW調用MATLAB script節(jié)點,,對信號變換濾波處理的程序框圖,。按照MATLAB程序中要求的信息分別在腳本節(jié)點外框上添加輸入變量和輸出變量(一般習慣把輸入變量放在左邊,輸出變量放在右邊),,同時修改數(shù)據類型,,使二者匹配。將LabVIEW采集到的信息送給MATLAB script節(jié)點,,導入事先在MATLAB中調試好的程序,,在LabVIEW中運行即可。輸出信號可通過輸出變量用相應的顯示控件在前面板顯示,,處理過程中許多需要設定的參數(shù)都可以在前面板以按鈕方式設置,,數(shù)據可任意改變,就像一個實際儀器一樣,,操作簡單,、數(shù)據可靠。該程序還可以打包成可安裝文件,,在任何平臺上使用,。
圖4是程序運行后顯示的波形。由圖4(a),、(b)可知,,原始信號是一個混雜有干擾的信號,其頻譜在低頻處有一個模值特別高的點,這一點就是原信號的數(shù)據,,這是需要保留的點,;而在高頻部分還有很多模值相對較小的點,這些就是干擾信號,,是要去除的數(shù)據。對數(shù)據進行低通濾波,,把高頻的信號去掉,,得到濾波后信號的頻譜圖,如圖4(c),、(d)所示,。由圖可知,高頻部分的雜波已經被清除,。如要了解時域的波形上有什么變化,,可以對頻域信號進行反傅里葉變換,得到經過低通濾波后的時域波形,,恢復后的波形是去除干擾后很好的正弦波,。
2.3 調用MATLAB script節(jié)點法對信號進行濾波程序
程序如下:
close all;%先關閉所有圖片
Adc=2;%直流分量幅度
Fs=256;%采樣頻率(Hz)
N=256;%采樣點數(shù)
t=0:1/Fs:N/Fs;%采樣時刻
plot(t,S);%顯示原始信號
title('原始信號');
hold on
figure;
Y=fft(S,256);%對信號進行256點的FFT
Ayy=abs(Y);%取模
plot(Ayy);%顯示取模后的FFT信號
title('原始信號頻譜圖');
hold on
figure;
RY=real(Y);%提取FFT后數(shù)據的實部
IY=imag(Y);%提取FFT后數(shù)據的虛部
RY(10:N-10)=0;%理想低通濾波
IY(10:N-10)=0;
plot(RY);
title('濾波后信號的頻譜圖');
hold on
figure;
YY=RY+1i*IY;%濾波后重新組合實部和虛部
SS=real(ifft(YY));%進行反傅里葉變換
figure
plot(SS,'r');%顯示濾波后的信號,
并與原始信號進行對比
title('濾波后的信號');
hold on
plot(S)
MATLAB具有強大的數(shù)值分析和處理能力,,還擁有眾多的專業(yè)工具箱,,因此在LabVIEW中調用MATLAB來解決問題過程簡單易行,并能夠擴展LabVIEW的功能,,極大地拓寬了虛擬儀器的開發(fā)范圍,。將LabVIEW與MATLAB有機地結合起來,在大型的測試系統(tǒng)與仿真過程中是非常有利的,。
參考文獻
[1] 劉衛(wèi)國,,陳昭平.MATLAB程序設計與應用[M].北京:高等教育出版社,2002.
[2] 劉君華.基于LabVIEW的虛擬儀器設計與應用[M].北京:高等教育出版社,,2002.
[3] 石博強.LabVIEW6.1編程技術實用教程[M].北京:中國鐵道出版社,,2002.
[4] BISHOP R H.LabVIEW 6i實用教程[M].喬瑞萍,譯.北京:電子工業(yè)出版社,,2002.
[5] 王沫然.MATLAB與科學計算(第二版)[M].北京:電子工業(yè)出版社,,2003.