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