虞海強
(西華大學(xué) 電氣信息學(xué)院,四川 成都 610039)
在多輸入多輸出系統(tǒng)中盲信號分離方法是當前國際研究的熱點和難點,盲信號處理技術(shù)原則上不利用任何數(shù)據(jù)訓(xùn)練,也沒有關(guān)于卷積、濾波、混合系統(tǒng)參數(shù)的先驗知識要求,已在聲納、圖像、語音、通信、雷達、振動和生物醫(yī)學(xué)等領(lǐng)域具有廣泛的應(yīng)用前景。而LabVIEW和MATLAB是當今最優(yōu)秀的軟件,若把LabVIEW軟件設(shè)計平臺和MATLAB結(jié)合使用,充分利用LabVIEW圖形化設(shè)計語言的優(yōu)點和MATLAB強大的數(shù)據(jù)處理能力,可直觀、方便地進行分析、計算及設(shè)計工作,從而大大提高工作效率。
盲信號處理的主要任務(wù)是對未知系統(tǒng)。在其輸入信號完全未知或只有很少先知的情況下,僅根據(jù)傳感器的輸出信號,運用某些算法來重構(gòu)輸入信號或進行系統(tǒng)辨識[1]。盲信號分離理論模型如圖1所示。
假設(shè)有 n個振源 s1,s2,…,sn,m個傳感器 x1,x2,…,xm,采樣數(shù)為K,則經(jīng)混合后觀測信號矢量與源信號矢量S(t)之間滿足下面關(guān)系式:
圖1 盲信號分離理論模型
式中A為 m×n的隨機混合矩陣;N(t)為 m×K是隨機噪聲矢量;S(t)為 n×K源信號矢量,且 S(t)=[s1(t),s2(t),…,sn(t)]T。若忽略噪聲影響或噪聲在分離前已被降低到可接受范圍內(nèi)時,則(1)式可寫成:
于是信號分離問題就轉(zhuǎn)化成在混合矩陣A和源信號矢量S(t)均未知的情況下,求一個n×m的分離矩陣矩陣B,使得B對混合信號矢量的線性變換:
是對源信號 S(t)的一個可靠估計。其中 Y(t)是 m×K的分離信號矢量,且 Y(t)=[y1(t),y2(t),…,yn(t)]T。
在實際中,由于誤差和干擾的存在,不可能實現(xiàn)振動信號源的完全恢復(fù),只能是源信號的估計,而且分離結(jié)果存在不確定性:分離后信號矢量的排序與初始相角的不定性。
在實際中,由于缺乏混合矩陣的結(jié)構(gòu)信息,因此必須要有關(guān)于源信號的一些附加假設(shè)[2]:①m×n混合矩陣A為滿秩矩陣,并且n≤m;②S(t)中的各信號 si分量為零均值的平穩(wěn)過程;③在每個時刻t,信號向量S(t)的各分量相互獨立統(tǒng)計;④S(t)的各分量都具有單位方差。
編程語言MATLAB具有強大的計算、仿真、繪圖等功能,它還提供了豐富的工具箱,涉及數(shù)值分析、信號處理、圖像處理、仿真等各個領(lǐng)域,但是它在界面開發(fā)、儀器連接控制和網(wǎng)絡(luò)通行等方面遠不如LabVIEW。因此將兩者結(jié)合起來編程,可以充分利用兩種語言的優(yōu)勢,方便地解決各個領(lǐng)域的儀器連接和數(shù)學(xué)分析等問題。
LabVIEW可以通過MathScript在LabVIEW中編寫并執(zhí)行MATLAB中的.m文件。MathScript包含了600多個數(shù)學(xué)分析與信號處理函數(shù),采用矩陣和數(shù)組作為基本數(shù)據(jù)類型,其語法與MATLAB所使用的腳本完全兼容,而且用戶可以自定義自己的函數(shù)來擴展MathScript的功能。通過MathScript節(jié)點可以簡單地與圖形化編程實現(xiàn)無縫結(jié)合[3]。
使用MathScript有兩種方法:
(1)使用LabVIEW中的MathScript窗口。在LabVIEW的工具菜單中單擊MathScrip窗口選項,就可以打開LabVIEW MathScript窗口,如圖2所示。利用MathScript窗口可以像使用MATLAB一樣執(zhí)行命令、編譯和運行腳本文件、查看運行結(jié)果等。在圖2的LabVIEW Math-Script窗口的命令中,逐條輸入MATLAB腳本.m文件或在右側(cè)腳本選項卡中輸入MATLAB腳本文件,單擊運行,就可以運行該腳本。
(2)在圖形程序框圖中使用MathScript節(jié)點。在程序框圖中有兩種打開MathScript節(jié)點的方式:①在程序框圖中單擊鼠標右鍵選擇 “函數(shù)選板”→“數(shù)學(xué)”→“腳本公式”→“MathScript節(jié)點”。②在程序框圖中單擊鼠標右鍵選擇“函數(shù)選板”→“結(jié)構(gòu)”→“MathScript節(jié)點”。
LabVIEW還可以在程序框圖中通過MATLAB腳本節(jié)點調(diào)用MATLAB程序[4]。在程序框圖中單擊鼠標右鍵選擇“數(shù)學(xué)”→“腳本與公式”→“腳本節(jié)點”→“MATLAB腳本節(jié)點”。在MATLAB腳本節(jié)點中右擊,選擇“導(dǎo)入”選項,可直接調(diào)用所需的MATLAB程序。
通過LabVIEW中的MATLAB腳本節(jié)點調(diào)用MATLAB的.m文件時,必須保證LabVIEW和MATLAB腳本節(jié)點之間傳輸數(shù)據(jù)類型的一致性。改變MATLAB腳本節(jié)點的輸入輸出端的數(shù)據(jù)類型可以通過右擊輸入或輸出端,從 “數(shù)據(jù)類型”選項中選擇所需要的數(shù)據(jù)類型。MATLAB腳本節(jié)點的數(shù)據(jù)類型有[5]Real、Complex、1-D Array of Real、1-D Array of Complex、2-D Array of Real、2-D Array of Complex、String和 Path 8種。
在本系統(tǒng)中,利用了聯(lián)合近似對角化算法(JADE),通過LabVIEW和MATLAB混合編程技術(shù),在混合參數(shù)未知的情況下,僅根據(jù)觀測信號以及源信號統(tǒng)計獨立的假設(shè)對源信號進行分離。系統(tǒng)的仿真輸入信號為70 Hz的角波、60 Hz的方波和50 Hz的正弦波?;旌暇幊痰某绦蚩驁D如圖3所示。
通過前面板觀測到線性混合數(shù)組A和分離矩陣B分別為:
對輸入信號進行100個點的采樣,其最終分離的效果圖4如所示。
由圖4可以看出,由于源信號幾乎不相關(guān),方差歸一化接近單位矩陣,分離所得到的結(jié)果和源信號相比十分接近,盡管分離后的信號在幅值與排序方面和源信號相比有差異,但這是由盲分離的不確定性所引起的。特征信息不僅僅包含于信號的幅值和排序中,在某些情況下,更多地包含于波形中。如果再配合某些先驗知識,就可以根據(jù)分離信號的波形來判斷其是否存在故障。
實驗結(jié)果表明,基于LabVIEW和MATLAB混合編程的盲信號分離系統(tǒng)的設(shè)計,充分利用了兩者的優(yōu)點,既有很好的人機界面,又有很強的數(shù)據(jù)處理能力,提高了編程的效率。通過前面板可以觀察盲信號分離的每一步的數(shù)據(jù)變化,混編技術(shù)可以將不同信號源進行可靠分離,而且還驗證了盲信號分離的兩個不確定性:幅度和順序的不確定性。同時實驗結(jié)果也驗證了該系統(tǒng)的有效性和可靠性。
[1]張啟發(fā).盲信號處理及應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2006.
[2]史習(xí)智.盲信號處理[M].上海:上海交通大學(xué)出版社,2008.
[3]曲麗蓉,胡榮,范壽康.LabVIEW、MATLAB及其混合編程技術(shù)[M].北京:機械工業(yè)出版社,2011.
[4]袁培鐸.基于LabVIEW與MATLAB混合編程的應(yīng)用研究[J].機械制造與自動化,2007(6):129-131.
[5](美)BISHOP R H著.LabVIEW 7.0實用教程[M].喬瑞萍,等譯.北京:電子工業(yè)出版社,2005.