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);
                }
        }
    }
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章