C#——调用Matlab函数

C#与Matlab交互

开发环境: Visual Studio 2019, .NetFramework 4.5, Matlab 2018b

1. C# 调用 Matlab


基本思路: 将 .m 文件(matlab 函数)打包为 .dll 文件以供 C# 调用

  1. Matlab 端操作

    1. 编写 matlab 函数

      function [x] = linear_equation_solve(A, b)
      %% 求解线性方程组 Ax = b
      x = A / b;
      end
      
    2. 将函数文件打包为 .dll 文件(使用matlab compiler)
      在这里插入图片描述

    3. 将打包得到的文件和 MWArray.dll 拷贝至需要引用的项目目录中,打包得到的文件一般包含 $function$.dll, $function$Native.dllMWArray.dll 可在 Matlab 的安装目录中找到

      Native和非Native的区别为: 用XXXXNative.dll在调用的时候,直接对参数采用了object类型,matab计算引擎会自己去识别。而非XXXXNative.dll都采用了精确的数据类型。参考: Matlab生成C#dll ,native 与非native的效率比较

  2. VS 端操作:将 $function$Native.dllMWArray.dll 添加至项目引用即可

    using System;
    using LinearEquationSolver;
    using MathWorks.MATLAB.NET.Arrays;
    
    namespace MatlabToDotNetSample{
        class Program{
            static void Main(string[] args){
                int[,] b_array = new int[,]{
                    {1}, {2}, {3}
                };
                int[,] a_array = new int[,]{
                    {1, 2, 3},
                    {4, 5, 6},
                    {7, 8, 9}
                };
                var A = new MWNumericArray(A_array);
                var b = new MWNumericArray(b_array);
                var result = new LinearEquationSolver.LinearEquationSolver().linear_equation_solve(A, b);
                }
        }
    }
    
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C#调用Matlab函数可以通过以下两种方式实现: ### 1. 使用Matlab Engine API Matlab Engine API提供了一组接口,可以在C#加载和执行Matlab函数。具体步骤如下: 1. 安装Matlab Engine API。Matlab Engine API需要和Matlab一起安装,安装时需要选择Matlab Engine API选项。 2. 在C#项目添加对Matlab Engine API的引用。在Visual Studio,右键项目,选择“引用”,然后选择“添加引用”,在COM选项选择“Matlab Application”。 3. 在C#代码加载和执行Matlab函数。示例代码如下: ```csharp // 创建Matlab Engine对象 var matlab = new Matlab(); // 执行Matlab函数 matlab.Execute("addpath('C:\\path\\to\\matlab\\function\\folder')"); matlab.Execute("result = myfunction(arg1, arg2)"); // 获取Matlab函数的返回值 double[] result = matlab.GetVariable("result", "base") as double[]; // 释放Matlab Engine对象 matlab.Quit(); ``` ### 2. 使用Matlab Compiler SDK Matlab Compiler SDK可以将Matlab函数编译成.NET组件,然后在C#调用。具体步骤如下: 1. 安装Matlab Compiler SDK。Matlab Compiler SDK需要和Matlab一起安装,安装时需要选择Matlab Compiler SDK选项。 2. 在Matlab编译函数。在Matlab命令行输入以下命令: ```matlab mcc -W "dotnet:MyComponent,MyNamespace,1.0" -T link:lib myfunction.m ``` 其,MyComponent是.NET组件的名称,MyNamespace是.NET命名空间的名称,1.0是.NET组件的版本号,myfunction.m是需要编译的Matlab函数。 3. 在C#项目添加对.NET组件的引用。在Visual Studio,右键项目,选择“引用”,然后选择“添加引用”,选择“浏览”,找到编译出来的.NET组件,添加引用。 4. 在C#代码调用.NET组件。示例代码如下: ```csharp // 创建.NET组件对象 var component = new MyComponent(); // 调用Matlab函数 double[] result = component.myfunction(arg1, arg2); // 释放.NET组件对象 component.Dispose(); ``` 需要注意的是,使用Matlab Compiler SDK编译的.NET组件需要在部署时安装Matlab Runtime,以保证能够正确运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值