版权声明
无需授权即可转载
最近因为项目需要,又捡起了Labview学习了一下,发现Labview这个东西真是好,所有的结果就是一个快字,这次主要是使用Labview调用Matlab中的算法文件,实现多矩阵输入,解除多矩阵输出,之前因为没有接触过这方面的东西,所以搜索了大量的文献和文档,大致总结了一个调用流程,就想在这里和大家分享一下,希望大家玩的开心
Matlab与Labview的几种交互方式
通过网上的文献,其实Labview和Matlab混合编程的文章很多,但是大多数的方式都是通过Labview中的Matlab Script直接编写Matlab脚本,实现算法的调用,这种方法的优缺点都很明显,缺点就是算法如果极其复杂,这套流程根本就没法走通,也就对于一些简单的Matlab脚本还可以适用。
其他的方法诸如DLL调用,和COM组件技术我也没有更深的研究,主要原因还是网上这些文章的针对性,特殊性太强,换个其他算法生成的DLL文件,就可能调用失败,或者无法解除正确的结果。
最后,我瞄上了.net技术,主要是C#和Labview混合编程是基于.net技术,而且这类的文章也很多,Labview中也可以调用基于.net的DLL文件,所以我最终选择的方法就是基于.net的技术的DLL文件调用,结果证明也确实是靠谱的。
.NET技术
.NET Framework 是一个针对常见程序需求提供了大量预编码解决方案的组件。您可以从 MATLAB 中创建 .NET 类的实例并与 .NET 应用程序交互。MATLAB 仅在 Windows平台上支持 .NET Framework
创建了.NET类后,就可以在Labview对.NET进行实例化,使用其中的属性和方法,但是因为在Matlab中使用的数据格式为Matlab特有的MWArray类型,这种类型在Labview中无法直接使用,所以需要通过MWArray.dll文件进行数据的传入,这个文件一般位于[Matlab安装位置]\Matlab版本号\toolbox\dotnetbuilder\bin\win64\v4.0文件夹中,我们注意到Matlab 2017b对应的MWArray.dll是2.17.1.0版本的。
创建一个.Net Assembly
先从一个简单的例子来看看Matlab中的程序是如何封装成.net运行库的,这里我使用的是matlab官方的例程,可以按照这个说明一步步的建立一个,net文件
访问链接如下
Matlab Example
这个例子里面建立了一个简单的一元函数,给一个输入就可以获得一个输出,输出是矩阵的形式,例如
之后我们把这个函数打包成.net组件,在APP标签上点击Library Compiler
for_redistribution — 包含Net文件和Matlab运行库
for_testing — 用于测试的文件
for_redistribution_files_only — 只包含Net文件
PackagingLog.txt — 打包记录文件
之后我们就可以开始使用这个.Net文件了,下次见。
领取专属 10元无门槛券
私享最新 技术干货