如何将Matlab的程序嵌入到Labview中去,也就是如何利用Matlab编程,用Labview开发界面?

作者&投稿:住昌 (若有异议请与网页底部的电邮联系)
labview和matlab是如何结合的?~

1 基本原理

ActiveX自动化是基于组件对象模型COM(Component Object Model)的技术,允许应用程序或组件控制另一
个应用程序或组件的运行,它包括自动化服务器和自动化控制器。MATLAB支持ActiveX自动化技术。通过使用
MATLAB自动化服务器功能,可以在其它应用程序中执行MATLAB命令,并与MATLAB的工作空间进行数据交换。因此
可以借助这一特性,把LabVIEW与MATLAB结合,充分利用MATLAB提供的大量高效可靠的算法和LabVIEW的图形化编
程能力,混合开发出功能强大的应用软件。

2 应用举例

在混合编程中,通常用LabVIEW设计用户图形界面,负责数据采集和网络通信;MATLAB在后台提供大型算法供
LabVIEW调用。

2.1 方法一:使用MATLAB Script节点

为了简化调用过程,LabVIEW提供了MATLAB Script节点。LabVIEW使用ActiveX技术执行该节点,启动一个
MATLAB进程。这样用户就可以很方便地在自己的LabVIEW应用程序中使用MATLAB,包括执行MATLAB命令、使用功能
丰富的各种工具箱,如神经网络工具箱(Neural Network Toolbox)、优化工具箱(Optimization Toolbox)。
值得注意的是:LabVIEWgn MATLAB之间的数据通信仅支持Real、RealVector、RealMatrix、Complex、
VectorComplex、Matrix六种格式的数据,且必须根据具体情况进行选择。

当开发涉及工业控制的应用程序时,常常由于控制参数的非线性变化,而无法建立合适的模型。由于此类问
题,神经网络提供了一条有效的解决途径。

在LabVIEW开发环境下新建一个三层BP神经网络的VI程序,程序框图见图1。网络结构部分主要设置隐层
(Hidelay)神经元的个数、传递函数(Transfer Function)以及网络训练算法(Algorithm)。经过样本数据
(Training Data)训练过的网络,即可进行仿真测试了。MATLAB脚本程序可以在MATLAB环境下调试,再使用
MATLAB Script节点导入MATLAB脚本;也可以直接在MATLAB Script节点中编写。位于
Function>>Mathematics>>Formula模板中的MATLAB Script节点可以导入MATLAB脚本。图1中的脚本程序使用CASE
语句进行传递函数和训练算法的选择。MATLAB Script节点中神经网络的输入层和隐层之间的权值矩阵inweight应
指定为RealMatrix,在LabVIEW中对应的数据类型是二维实数据组Net.I-Weight。各变量数据类型见表1。

表1 MATLAB Script节点输入、输出变量的数据类型

变量名 LabVIEW数据类型 MATLAB数据类型
size of algorithm Double floating point numeric Real
t outweight hideb outb result 1D array double floating numeric Real Vector
p data inweight Multidimensional array double floating point numeric Real Matrix

在此程序中,得到的BP网络各层的权值矩 阵、阈值向量和传递函数三类参非常有用的,它们决定了神经网络
的结构与特性。因此当神经网络训练好后,可以直接使用这些参数处理新的数据,得到预测值,而不必重新调用
MATLAB。这样程序的运行效率会更高。另一方面,将调试好的神经网络VI创建成一个子VI,作为模块保存,当需
要更新网络时,可以随时调用。

虽然通过MATLAB Script节点进行通信比较易于实现,但以这种方式调用MATLAB时,在任务栏中将出现一个
MATLAB图标,单击该图形会打开MATLAB窗口,在其中可以任意输入。通常,这会干扰前台程序的运行,甚至造成
程序的崩溃。另一方面,当MATLAB Script节点中的脚本执行完后,MATLAB也不能自动关闭。

你要只使用LabVIEW做这三个内容的话。。。还不如直接用matlab自带的工具做个界面。。。

用LabVIEW和Matlab混合编程技术可以实现,具体有以下几种方法
一、基于动态数据交换(DDE)技术

动态数据交换是Windows操作系统中一种基于消息的协议,用于在Windows平台上的两个正在运行的应用程序之间动态交换数据,其中提供数据服务的程序称为服务器程序(DDE Server),请求数据和服务的程序称为客户程序(DDE Client).LabVIEW提供了DDE通信VI,利用这些VI可以创建DDE Server或DDE Client,完成接收/发送数据、请求/提供服务等功能。LabVIEW调用Matlab功能时,需将服务名(service name)指定为”Matlab”,主题名(Topic Name)指定为”Engine”,同时在运行VI之前先启动Matlab或者Matlab计算引擎(在内存中均为Matlab.exe),否则无法通信。DDE VIs可在<LabVIEW>\vi.lib\platform\dde.llb下找到。

二、基于动态链接库(DLL)技术

动态连接库是基于Windows程序设计的一个重要组成部分,它由一系列封装好的可执行代码组成,其内部函数能被其他程序所共享。LabVIEW通过CLF(Call Library Function Node)实现对DLL的调用。另一方面,Matlab编译器能将函数文件编译C/C++代码,这些代码又能被C/C++编译器(如Microsoft Visual C++ 6.0)编译成DLL文件,只要接口(输入输出参数)安排正确,就可以将Matlab编写的算法集成到LabVIEW应用程序中,且脱离了Matlab运行环境,执行效率高。另外,Math works公司为Microsoft Visual C++ 6.0提供了一个插件,可以轻松完成上述工作,当然接口还需开发人员自己安排。CLF在函数面板的“Advanced”子模板下。

三. 基于组件对象模型(COM)技术

组件对象模型的核心就是二进制接口规范,此规范独立于编程语言和操作系统。从6.5版本开始,Matlab提供了COM生成器。COM生成器提供了实现Matlab独立应用的一种新途径。它能把Matlab开发的算法做成组件,这些组件作为独立的COM对象,可直接被Visual Basic,Visual C++或其他支持COM的语言所引用[1]。LabVIEW5.0及以上版本支持COM。它通过自动化标识(automation refnum)获取一个已安装在系统中的COM组件的引用,然后借助ActiveX功能子模板中的VI完成对组件的控制和调用工作。利用COM技术的LabVIEW和Matlab无缝集成的应用程序运行效率高,占有系统资源少,而且非常利于用户应用软件的发布。[2]

四. 基于ActiveX自动化技术

ActiveX的自动化(automation)是ActiveX最重要的功能之一,是一个程序借助其方法和属性控制另一程序的能力,它包括自动化服务器和自动化控制器。Matlab支持ActiveX自动化技术。Matlab自动化服务器提供一系列方法和属性,借此可以实现在其他应用程序中执行Matlab命令和控制Matlab。LabVIEW5.0及以后的版本提供对ActiveX自动化的支持。在LabVIEW中基于ActiveX实现和Matlab混合编程的方法又有两种,第一种使用Matlab脚本节点,第二种使用ActiveX函数模板。两种方法的基本过程都相同――先打开Matlab自动化服务器,然后执行Matlab命令,最后关闭自动化服务器。LabVIEW中与ActiveX有关函数模板在函数面板中“communication”子面板下的”ActiveX”面板中。

五. 其他方法

还有一种将DLL和Matlab计算引擎(基于COM技术)结合起来的方法。这种方法把调用Matlab计算引擎的C代码编译成DLL供LabVIEW调用。Matlab计算引擎采用了客户机/服务器的模式,在windows上通过ActiveX通道与Matlab进行连接,因此这种方法与基于ActiveX自动化技术的方法有些类似。在进行混合编程时,先打开Matlab计算引擎,然后执行Matlab命令,最后关闭Matlab计算引擎。所不同的是使用ActiveX自动化技术传递数据均为变体,数据类型由应用程序和Matlab服务器自动匹配,而通过DLL调用Matlab计算引擎的方法即可传递变体类型数据也可传递标准C类型数据,数据类型之间的转换在DLL中完成,因此需开发人员额外编程。除了上述混合编程方法外,NI公司和Math works公司合作推出一个工具包――SIT(Simulation Interface Toolkit),用来实现LabVIEW和Simulink交互式编程。有了这一工具包,设计工程师们可以建立自定义的用户界面,以便交互式地验证Simulink模型,并轻松地将这些模型配置到实时硬件进行控制原型设计和硬件在环(hardware-in-the-loop)测试,最终节省产品上市时间。但如其名,它仅用于和Simulink通信,且为附加软件需额外购买。

我认为labview更好,工作中用得很多,并且不是很难学,而matlab虽然数据处理能力强,但前者的前途更广,我是两门都学了后发现还是前者更好:)最好你是再学一门关于信号处理的课程哦!

"图形化编程语言简称G语言。它是继C语言之后的新一代高级语言。也许你已经有这样的经验:用C语言编程,编程者不仅要熟悉指令的用法,而且需用语句写成一段文档——告诉计算机怎么做。在这类编程环境中设计程序,让我们体验抽象美的同时,有些人会感到枯燥。G语言从根本上改变了传统的编程环境。用“图标”代替了“文本指令”。在可视化的程序设计中,编程者只需调用“图标(对象)”,随后通过“连线”规定数据的流向。编程工作仿佛在画程序框图,整个过程变得直观、简便而有趣。
LabVIEW是G语言的主流产品。它的译名为实验虚拟仪器工程平台。它不仅具备C语言的基本功能,而且还提供强大的函数、仪器驱动等高级软件库。因此特别适合于测控领域开发应用软件。
现在你可能已理解:图形化编程不是计算机图形学。它既不研究几何图形的编程算法,也不涉及照片图象的处理技术。
尽管DOS操作系统的命令也可实现文件的复制等操作,但是现在这样操作的人已经很少了。因为已习惯在Windows图形窗口环境中使用快捷命令。至于在Word中的文档复制那就更简便了,只需点击工具栏上相关图标。同样道理,今天欧美许多高校非计算机专业的学生选修G语言并用它开发应用软件的人数已经超过C等文本语言。据报道一般编程者用G语言开发软件的工作效率比C等文本语言提高4—10倍。
近年来我国高校G语言教学实践正在迅速展开,中文书籍不断出版。在学习编程开发工具方面有更多的选择。

把matlab编译成动态链接库,用labview调用;
或者在labview界面里用matlab公式节点调用matlab编程;

先在matlab中编好.m文件,问候在labview中使用公式节点中的脚本公式


如何将matlab的图形文件以图片格式导出到word中呢?
1.我们需要对matlab有一个初步的了解后,才可能完成后续的步骤,例子如下:2.现在我们需要把图形隐藏起来,也就是不主动弹出图形窗口,这一步需要我们了解相关的函数句柄的知识,具体看图:3.在上一步中,函数图形的可见性(visible)已经关闭(off),也就是被隐藏起来了,接着我们得把plot函数做出的图...

matlab如何将某一部分计算指定在某个核上
1、利用%。具体的操作步骤为:打开matlab软件,找到指定的m文件。在菜单栏找到“%”,选中需要运行的代码全部选中。后点击“%”。这是看到代码变成了绿色,说明已经注释好,即可运行。2、一般来说Matlab的parallellization是通过parforloop实现的比如要计算一个自己写的函数y=foo(x)有一个序列X,希望计算...

怎样在Matlab中将图片调整为合适的大小?
(1)在Matlab图像窗口中,选择Edit——Copy Options——Preferences ——match screen size(所见即所得)(2)将Word的显示比例设置成100%。这将保证Matlab中产生的图像大小与Word中显示的一致。(3)根据排版需要,估计图像大小,使用鼠标拖拽调整大小。(4)使用Copy Figure将图片输出到Word。如果在word中实现...

如何将MATLAB程序中每一步的计算结果都保存到一个数组里?
%%循环存入各个值的计算结果\\x0d\\x0a end\\x0d\\x0a a1\\x0d\\x0aa1 =\\x0d\\x0a Columns 1 through 13 \\x0d\\x0a 0.2500 0.3600 0.4900 0.6400 0.8100 1.0000 1.2100 1.4400 1.6900 1.9600 2.2500 2.5600 2.8900\\x0d\\x0...

如何将matlab安装在新的工作目录下
1、首先,单击进入matlab,然后在以上选项中双击文件,如下图所示,然后进入下一步。2、其次,完成上述步骤后,可以在下方找到工作路径图标,然后单击以进入工作路径设置,如下图所示,然后进入下一步。3、接着,完成上述步骤后,可以看到matlab的当前工作路径,如果要添加新的工作目录,请单击左上方的“...

怎样将matlab中的数据导入到excel中
1、很简单的用xlswrite函数就可以了。首先打开matlab,输入你的代码 2、找到你要存放文件的位置复制绝对路径(致谢文件名的话就会存放在当前目录中),如图以f盘根目录为例)3、然后写xlswrite函数,格式如图,具体格式课参看help xlswrite,xlswrite函数前一项是路径,后一项是要输出的矩阵。4、然后点击执行...

matlab中如何将uitable中的数据保存在指定路径下
你好:要想学好,使用好matlab,多多查看帮助是非常有必要的,毕竟每个人都不会把所有命令都记得很清楚。uitable最为交互界面的一个数据读取的一个简单命令是有其局限性的。首先使用get命令 get(handles.uitable,'data') 获得数据 然后保存这个数据 当然保存的命令可以选用save也可以选用xlswrite等命令 也...

如何将matlab的m文件生成可执行文件,详细的
将m文件放在matlab当前目录下,在工作空间中键入 mcc -e .m(这个不会出现dos黑屏,或者你也可写mcc -m .m),等待产生exe文件。如果要打包,选择.exe、.ctf、.m文件,再到MATLAB根目录\\toolbox\\compiler\\deploy\\win32下找MCRInstaller.exe文件,一起打包到其他机器。安装MCRInstaller.exe,然后更改...

如何将matlab程序编译成独立可执行的程序
一、生成独立可执行的程序(exe文件)步骤 1、安装编译器。可有多种选择,matlab自带了一个LCC,推荐使用VC++6.0,我基于VS 2003实现。2、设置编译器。在matlab命令行输入mbuild –setup以及mex –setup,选择安装的c编译器。3、调用编译器。此处使用MATLAB下的一个GUI平台deploytool下完全实现。在命令...

MATLAB如何将英文版本变为中文版本呢?
将MATLAB变成中文需要6步,具体如下:1、首先打开软件,点击左上角“home”;2、然后在该快捷工具栏中,点击图示位置的“preferences”选项;3、然后选中左侧的导航栏“general”选项;4、然后将图示位置的“English”更改为“Chinese”。点击下面“OK”。注意:这里提示你必须重启,才会更改。5、然后点击...

古县17799708101: 怎样把matlab的code贴到la - tex中 -
兴轮八正: 如果你想问的是如何在latex中输入一段matlab源代码,那么可以这样 \begin{verbatim} A = randn(4); [V, D] = eig(A^4); \end{verbatim}

古县17799708101: 怎样把Matlab图清晰的插入到Latex中 -
兴轮八正: 步骤如下:1. 将jpg图片打开,点击文件---导出设置------放大坐标轴至充满图形-----应用于图形-----另存为eps格式即可.注意:编译器Windit中选LaTex模式begin{figure}[!t]centeringincludegraphics[width=2.5in]{myfig1}caption{Average run time per iteration.}label{fig:f1}end{figure}让图片标题居中方法:导言区加usepackage{caption2}

古县17799708101: 如何将Matlab的程序嵌入到Labview中去,也就是如何利用Matlab编程,用Labview开发界面? -
兴轮八正: 用LabVIEW和Matlab混合编程技术可以实现,具体有以下几种方法 一、基于动态数据交换(DDE)技术 动态数据交换是Windows操作系统中一种基于消息的协议,用于在Windows平台上的两个正在运行的应用程序之间动态交换数据,其中提供...

古县17799708101: 怎样把Matlab图清晰的插入到Latex中 -
兴轮八正: 导出成eps或pdf图片再插入tex文档

古县17799708101: labview与matlab混合编程时,matlab中fsolve函数在labview中怎样调用? -
兴轮八正: 在labview里面可以直接嵌入matlab程序的.里面有个function是“matlab script node”.在函数选板里面的“数学”-“脚本与公式”-“脚本节点”下.你把m源文件可以放入进去,定义号输入参数 和输出(在你的例子里就是q(1)和q(2)了).输入参数和输出防在前面板上.方便观察.输出用“图形显示控件”下的波形表.输入用个数值输入就可以了.然后运行.在波形表里就可以看到q(1)和q(2)的输出了.你可以在一个波形表上看 一个波形(那么你需要放2个波形表来观察2个输出).也可有在同一个波形表里看2个输出的曲线.这个需要程序里面加入“创建数组”函数,把2个输出构成一个2维数组送给波形表显示.

古县17799708101: 如何将matlab里面的数据输入到latex里面 -
兴轮八正: MATLAB可以直接导出为latex格式

古县17799708101: 如何将Matlab程序移植到Android平台上 -
兴轮八正: 方法如下:1、将Matlab重写为C,在高版本Matlab里找应用程序编译器功能,选择生成C/C++ Static Library并选中Generate code only.2、然后用cygwin编译成*.so库.3、Android中使用JNI调用.注意:不是Matlab和C混合编译,混合编译你要有Matlab的解释器才可以.Matalb中一个简单的Sobel算子重写为C,就生成了如下一堆代码

古县17799708101: 如何将MATLAB编好的程序嵌入到step7中 -
兴轮八正: 你写程序并保存后,如果是脚本文件,点上方工具中的“运行”,就可以了;如果是函数文件,要先定义输入变量,再调用函数,才能运行.

古县17799708101: 怎么把程序放到matlab中 -
兴轮八正: 把程序放到matlab中有两种, 第一个 :是在命令窗口直接输入程序语句,之间用“;”隔开,可以输入一句回车一下,如果有分号,这句了执行不显示,若没有分号,执行显示; 第二个 :将程序写在一个m文件中,m文件有命令式和函数式的,前者完成程序输入后可以直接执行,后者还可以传入参数调用,就像c语言一样.多加练习,你就会啦.

古县17799708101: 求助,如何将matlab写的程序导入ABAQUS中 -
兴轮八正: 后来解决了,你可以试试. ①在提交job时找到edit job下的General这一栏; ②找到scratch directory,点击打开文件夹标识; ③找到abaqus安装目录,点击新建文件按钮,创建DirectoryName文件夹; ④点击ok即可;

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网