C#与MATLAB集成:调用MATLAB代码与函数

说明

最近正在学习如何使用C#调Matlab的代码,查阅了很多相关资料,踩了不少坑 ,不过终于解决了问题。

软件环境:

   C#: Visual Studio 2013 MATLAB : MATLAB R2020b

(MATLAB 是使用学校邮箱注册的正版软件,Vs2013用的是破解版,之后也成功测试了Vs2017)。

一、MATLAB 配置和封装

1. MATLAB 工具包安装

需要安装 MATLAB CompilerMATLAB Compiler SDK 两个工具包(),一种可行的方法是用安装程序安装;
在这里插入图片描述

   另一种方法是:在命令行窗口输入: deploytool
MATLAB CompilerMATLAB Compiler SDK 进入到 附加功能资源管理器 界面中,
在这里插入图片描述

   这里安装的是 MATLAB Compiler SDK
在这里插入图片描述

   因为安装 MATLAB Compiler SDK,会连带安装MATLAB Compiler
在这里插入图片描述

2. 编写 MATLAB 程序

编写一个简单的  函数(保存为addNum.m);

function result = addNum(a,b)
    result = a + b;  
end    

3. 封装为dll

(1) 在命令行窗口输入: deploytool
在这里插入图片描述

在弹出的 MATLAB Compiler 窗口中 选择 Library Compiler
在这里插入图片描述

   或者也可以通过上方 编辑器 旁边的 APP,右边的下拉按钮,
在这里插入图片描述

   在 应用程序部署 中也可以找到 Library Compiler在这里插入图片描述

   (2) 在Library Compiler界面中,只需要执行下面三个步骤:
在这里插入图片描述

第一步:下拉  的滑动条,选择其中的 .NET Assembly
在这里插入图片描述

   第二步:点击  的加号,
在这里插入图片描述

   添加所写函数保存的.m文件的;
在这里插入图片描述

第三步:类的名字可以自己设置,这里保持默认的 Class1

   最后点击 Package
在这里插入图片描述

   路径可以选择和.m文件在同一文件夹下,然后等待打包完成。
在这里插入图片描述

   至此 MATLAB 对.m文件内函数的封装已经完成。

二、Visual Studio 配置及编程

1. Vs 配置

第一步:打开Visual Studio 2013,新建项目,这里使用的是 ,给定名称、设置好路径后,点击 确定 ,创建项目。
在这里插入图片描述

   第二步:在 解决方案资源管理器 中,右键 ,点击
在这里插入图片描述

   点击 浏览 ,找到之前MATLAB封装后生成的文件夹,
在这里插入图片描述

   打开文件名为 for_redistribution_files_only下的 addNum.dll

在这里插入图片描述

   进行添加,
在这里插入图片描述

   然后还需添加一个 MWArray.dll 用于C#和MATLAB之间的数据传递,

   路径是:MATLAB安装的文件夹/ toolbox / dotnetbuilder / bin / win64 / v4.0在这里插入图片描述

   添加完成后可以看到 addNumMWArry 已经在 引用 中;
在这里插入图片描述

   第三步:右键 项目,点击 属性 ,(这一步也是最坑的,花费了大量时间才找到解决办法);
在这里插入图片描述

   左边一栏中,选择 生成,将 目标平台,修改为 ;
在这里插入图片描述

2. 编写 C# 程序

这里用最简单的一个例子进行测试:

using System;
using addNum;
using MathWorks.MATLAB.NET.Arrays;

namespace UseMatlab
{
    class Program
    {
        static void Main()
        {
            Class1 demo = new Class1();
            MWArray a = 1, b = 2, c;
            c = demo.addNum(a, b);
            Console.WriteLine("a:{0},b:{1}", a, b);
            Console.WriteLine("c:{0}",c);
        }
    }
}

点击启动,需要稍等一会,控制台上即可显示输出结果。
在这里插入图片描述

3. 额外测试

之后又尝试了C#调用Matlab的  功能,将原来写的addNum函数进行修改:

function result = addNum(a,b)
    result = a + b; 
     
    x = -5:0.1:5;
    y = sin(x);
    plot(x,y);   
end    

代码修改后,双击 addNum.prj 工程文件,点击 Package,对函数重新进行打包;
在这里插入图片描述

   此时Vs端 不需要 重新添加引用,直接点击 启动,即可运行代码,
在这里插入图片描述
控制台窗口 显示数字后,弹出Matlab plot函数运行后的 Figure 窗口。

   至此,完成C#对Matlab函数的调用。

三、总结

  1. MATLAB 需要安装两个工具包 :MATLAB CompilerMATLAB Compiler SDK ;
  2. MATLAB封装的 步骤路径 要清楚;
  3. VS端 需要 添加 两个引用:addNum.dllMWArray.dll
  4. VS端 生成的 目标平台 一定要改为 x64

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空