APP下载

LabVIEW与MATLAB混合编程在盲信号分离中的应用

2011-07-25虞海强

网络安全与数据管理 2011年18期
关键词:程序框图数据类型脚本

虞海强

(西华大学 电气信息学院,四川 成都 610039)

在多输入多输出系统中盲信号分离方法是当前国际研究的热点和难点,盲信号处理技术原则上不利用任何数据训练,也没有关于卷积、滤波、混合系统参数的先验知识要求,已在声纳、图像、语音、通信、雷达、振动和生物医学等领域具有广泛的应用前景。而LabVIEW和MATLAB是当今最优秀的软件,若把LabVIEW软件设计平台和MATLAB结合使用,充分利用LabVIEW图形化设计语言的优点和MATLAB强大的数据处理能力,可直观、方便地进行分析、计算及设计工作,从而大大提高工作效率。

1 盲信号分离问题

盲信号处理的主要任务是对未知系统。在其输入信号完全未知或只有很少先知的情况下,仅根据传感器的输出信号,运用某些算法来重构输入信号或进行系统辨识[1]。盲信号分离理论模型如图1所示。

假设有 n个振源 s1,s2,…,sn,m个传感器 x1,x2,…,xm,采样数为K,则经混合后观测信号矢量与源信号矢量S(t)之间满足下面关系式:

图1 盲信号分离理论模型

式中A为 m×n的随机混合矩阵;N(t)为 m×K是随机噪声矢量;S(t)为 n×K源信号矢量,且 S(t)=[s1(t),s2(t),…,sn(t)]T。若忽略噪声影响或噪声在分离前已被降低到可接受范围内时,则(1)式可写成:

于是信号分离问题就转化成在混合矩阵A和源信号矢量S(t)均未知的情况下,求一个n×m的分离矩阵矩阵B,使得B对混合信号矢量的线性变换:

是对源信号 S(t)的一个可靠估计。其中 Y(t)是 m×K的分离信号矢量,且 Y(t)=[y1(t),y2(t),…,yn(t)]T。

在实际中,由于误差和干扰的存在,不可能实现振动信号源的完全恢复,只能是源信号的估计,而且分离结果存在不确定性:分离后信号矢量的排序与初始相角的不定性。

在实际中,由于缺乏混合矩阵的结构信息,因此必须要有关于源信号的一些附加假设[2]:①m×n混合矩阵A为满秩矩阵,并且n≤m;②S(t)中的各信号 si分量为零均值的平稳过程;③在每个时刻t,信号向量S(t)的各分量相互独立统计;④S(t)的各分量都具有单位方差。

2 LabVIEW与MATLAB混合编程

编程语言MATLAB具有强大的计算、仿真、绘图等功能,它还提供了丰富的工具箱,涉及数值分析、信号处理、图像处理、仿真等各个领域,但是它在界面开发、仪器连接控制和网络通行等方面远不如LabVIEW。因此将两者结合起来编程,可以充分利用两种语言的优势,方便地解决各个领域的仪器连接和数学分析等问题。

LabVIEW可以通过MathScript在LabVIEW中编写并执行MATLAB中的.m文件。MathScript包含了600多个数学分析与信号处理函数,采用矩阵和数组作为基本数据类型,其语法与MATLAB所使用的脚本完全兼容,而且用户可以自定义自己的函数来扩展MathScript的功能。通过MathScript节点可以简单地与图形化编程实现无缝结合[3]。

使用MathScript有两种方法:

(1)使用LabVIEW中的MathScript窗口。在LabVIEW的工具菜单中单击MathScrip窗口选项,就可以打开LabVIEW MathScript窗口,如图2所示。利用MathScript窗口可以像使用MATLAB一样执行命令、编译和运行脚本文件、查看运行结果等。在图2的LabVIEW Math-Script窗口的命令中,逐条输入MATLAB脚本.m文件或在右侧脚本选项卡中输入MATLAB脚本文件,单击运行,就可以运行该脚本。

(2)在图形程序框图中使用MathScript节点。在程序框图中有两种打开MathScript节点的方式:①在程序框图中单击鼠标右键选择 “函数选板”→“数学”→“脚本公式”→“MathScript节点”。②在程序框图中单击鼠标右键选择“函数选板”→“结构”→“MathScript节点”。

LabVIEW还可以在程序框图中通过MATLAB脚本节点调用MATLAB程序[4]。在程序框图中单击鼠标右键选择“数学”→“脚本与公式”→“脚本节点”→“MATLAB脚本节点”。在MATLAB脚本节点中右击,选择“导入”选项,可直接调用所需的MATLAB程序。

通过LabVIEW中的MATLAB脚本节点调用MATLAB的.m文件时,必须保证LabVIEW和MATLAB脚本节点之间传输数据类型的一致性。改变MATLAB脚本节点的输入输出端的数据类型可以通过右击输入或输出端,从 “数据类型”选项中选择所需要的数据类型。MATLAB脚本节点的数据类型有[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种。

3 混合编程在盲信号分离中的应用

在本系统中,利用了联合近似对角化算法(JADE),通过LabVIEW和MATLAB混合编程技术,在混合参数未知的情况下,仅根据观测信号以及源信号统计独立的假设对源信号进行分离。系统的仿真输入信号为70 Hz的角波、60 Hz的方波和50 Hz的正弦波。混合编程的程序框图如图3所示。

通过前面板观测到线性混合数组A和分离矩阵B分别为:

对输入信号进行100个点的采样,其最终分离的效果图4如所示。

由图4可以看出,由于源信号几乎不相关,方差归一化接近单位矩阵,分离所得到的结果和源信号相比十分接近,尽管分离后的信号在幅值与排序方面和源信号相比有差异,但这是由盲分离的不确定性所引起的。特征信息不仅仅包含于信号的幅值和排序中,在某些情况下,更多地包含于波形中。如果再配合某些先验知识,就可以根据分离信号的波形来判断其是否存在故障。

4 结果分析与结论

实验结果表明,基于LabVIEW和MATLAB混合编程的盲信号分离系统的设计,充分利用了两者的优点,既有很好的人机界面,又有很强的数据处理能力,提高了编程的效率。通过前面板可以观察盲信号分离的每一步的数据变化,混编技术可以将不同信号源进行可靠分离,而且还验证了盲信号分离的两个不确定性:幅度和顺序的不确定性。同时实验结果也验证了该系统的有效性和可靠性。

[1]张启发.盲信号处理及应用[M].西安:西安电子科技大学出版社,2006.

[2]史习智.盲信号处理[M].上海:上海交通大学出版社,2008.

[3]曲丽蓉,胡荣,范寿康.LabVIEW、MATLAB及其混合编程技术[M].北京:机械工业出版社,2011.

[4]袁培铎.基于LabVIEW与MATLAB混合编程的应用研究[J].机械制造与自动化,2007(6):129-131.

[5](美)BISHOP R H著.LabVIEW 7.0实用教程[M].乔瑞萍,等译.北京:电子工业出版社,2005.

猜你喜欢

程序框图数据类型脚本
酒驾
“顺势而下”破解程序框图
安奇奇与小cool 龙(第二回)
如何理解数据结构中的抽象数据类型
算法与程序框图常考类型
程序框图问题的精彩交汇
快乐假期
小编的新年愿望
基于SeisBase模型的地震勘探成果数据管理系统设计
线上众筹产品的特征分析与研究