Matlab与Labview混合编程(一)

版权声明

无需授权即可转载

最近因为项目需要,又捡起了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文件了,下次见。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181209G0GH5D00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券