LabVIEW与MATLAB的混合编程技术浅析
2014-10-21宋凡峰吴广祥
宋凡峰 吴广祥
【摘 要】MATLAB是一种高效率的工程计算软件,LabVIEW是一种高性能的图形化虚拟仪器编程软件,本文首先分析了几种LabVIEW与MATLAB混合编程技术的优缺点,然后在LabVIEW中通过MATLAB Script节点调用MATLAB,利用MATLAB图像处理工具箱中的函数进行图像处理。
【关键词】虚拟仪器;LabVIEW;MATLAB Script
MATLAB是一款强大的科学计算软件,它集数值分析、矩阵运算、信号处理和图形显示于一体,针对不同领域的应用,具有信号处理、图像处理、神经网络等几十个专用工具箱;MATLAB缺点在于界面开发能力较差,并且数据输入、网络通信、硬件控制等方面都比较繁琐。
虚拟仪器是是一个按照仪器需求组织的数据采集系统,LabVIEW是开发虚拟仪器的、基于图形化编程G语言的高效软件,它图形界面丰富,可以容易地制作各种界面。但在对各种算法的支持方面,LabVIEW的工具箱非常有限,这就限制了大型应用程序的快速开发。
如果能把二者的优点想整合,利用混合编程技术在LabVIEW中调用和操作MATLAB,就可以相互补充,充分发挥两者的优势,开发出高效率的虚拟仪器。
一、LabVIEW中调用和操作MATLAB的方法
LabVIEW和MATLAB混合编程的实现主要有以下几种方法。
(一)利用MATLAB Script节点调用MATLAB算法
在MATLAB Script节点中,用户可以编辑MATLAB程序,也可以直接调入已经存在的MATLAB程序,并在LabVIEW环境下运行。用户可以很方便地在自己的LabVIEW应用程序中使用MATLAB编写的算法和功能丰富的工具箱。
MATLAB Script节点对输入、输出数据的类型有明确的要求。目前两者之间的数据通信仅支持Real、Real Vector、Real Matrix、Complex、Vector Complex、Matrix六种格式的数据,而且还必须根据具体情况进行选择。
用该方法实现LabVIEW与MATLAB的混合编程简单、实用,其缺点是没有脱离MATLAB的环境,而只是将它在后台执行,所以这种方法必须在计算机中安装有MATLAB。
(二)利用COM组件调用MATLAB算法
COM技术的核心就是二进制接口规范,此规范独立于编程语言和操作系统。从MATLAB6.5开始增加MATLAB COM Builder功能,它可以帮助用户将用M语言开发的算法自动、快速地转变为独立的COM组件对象。通过COM组件,可以同其他用户共享已经开发的算法,并且可以免费地随同COM应用程序发布MATLAB算法。
LabVIEW在其Function》Communication》ActiveX模块中提供了一组与组件操作相关的子VI,其中Automation Open节点打开一个与COM对象相连的Refnum,然后该Refnum 能够被传递给模块中的其他函数节点,从而实现具体的COM对象操作,最后Close Automation节点关闭Refnum。
利用COM技术,MATLAB Builder for COM能够将低速执行的M文件编译成二进制的COM组件,嵌入到LabVIEW程序中。这种方法对于规模较大,性能、速度、内存管理要求较高的LabVIEW应用程序来说,是非常有利的。
(三)利用动态链接库技术
动态链接库(DLL)是基于Windows程序设计的一个重要的组成部分。在LabVIEW下利用DLL技术调用MATLAB,首先是用m文件翻译器Matcom将MATLAB的,源文件翻译为cpp代码,并编译为dll文件;然后用LabVIEW提供的调用库函数(Call Library Function,CLF)节点,在LabVIEW中实现DLL函数的调用。
该方法必须安装Matcom,但是Matcom对class类和图形窗口的支持不够,使得图像处理的一些功能不能使用,无法画出像MATLAB中那样精细的图像。
比较以上三种方法可知,利用动态链接库的方法不适合调用MATLAB进行图像处理;利用COM组件可以完成调用MATLAB图像处理的功能,但比较繁琐,适合于大型系统设计;利用MATLAB Script节点可以方便地完成MATLAB图像处理功能,满足一般需求,开发出小型高效的虚拟仪器系统。
二、LabVIEW与MATLAB混合编程图像处理的实现
LabVIEW的每个程序就是一个VI,它包括前面板和框图程序窗口两部分。在LabVIEW中利用MATLAB Script实现MATLAB图像处理方法为:在框图程序窗口中,通过Functions Palette- Mathematics-Formula-MATLAB Script,打开MATLAB Script节点,可以直接在其框图中写入MATLAB图像处理程序,也可以在框图中点击右键,在弹出菜单中选择“import”,在对话框中选择要导入的图像处理M程序文件即完成了节点程序的写入。一般情况下推荐使用后者,在MATLAB环境下编译通过的M文件导入节点可以节省调试时间,提高开发效率。在框图内书写或调用文件时要保证每一条语句的完整性,或者完整写在一行,或者分行要有连接符,否则,程序运行会产生错误。MATLAB Script节点的参数传递可通过添加输入输出完成。在节点边框上单击鼠标右键,在弹出式菜单中选择“Add Input”或“Add Output”,注意數字图像是以矩阵格式存储的,所以输入输出图像的数据格式选择为Real Matrix。
三、结束语
通过LabVIEW与MATLAB混合编程,二者扬长避短,优秀的LabVIEW图形化编程语言与强大的MATLAB工程计算语言结合,必将大大提高虚拟仪器的开发效率。
参考文献:
[1]杨乐平,李海涛,杨磊.LabVIEW程序设计与应用[M].北京:电子工业出版社,2005.
[2]裴锋,汪翠英,李资荣.基于LabVIEW的虚拟仪器算法解决方案[J].自动化仪表,2005,26(8):63-65.
作者简介:
宋凡峰(1981-),男,山东济宁人,山东水利职业学院教师,主要从事电气工程、自动检测等方面的教学与研究。