C#與Matlab交互
開發環境: Visual Studio 2019, .NetFramework 4.5, Matlab 2018b
1. C# 調用 Matlab
基本思路: 將 .m
文件(matlab
函數)打包爲 .dll
文件以供 C#
調用
-
Matlab
端操作-
編寫
matlab
函數function [x] = linear_equation_solve(A, b) %% 求解線性方程組 Ax = b x = A / b; end
-
將函數文件打包爲
.dll
文件(使用matlab compiler)
-
將打包得到的文件和
MWArray.dll
拷貝至需要引用的項目目錄中,打包得到的文件一般包含$function$.dll
,$function$Native.dll
,MWArray.dll
可在Matlab
的安裝目錄中找到Native和非Native的區別爲: 用XXXXNative.dll在調用的時候,直接對參數採用了object類型,matab計算引擎會自己去識別。而非XXXXNative.dll都採用了精確的數據類型。參考: Matlab生成C#dll ,native 與非native的效率比較
-
-
VS
端操作:將$function$Native.dll
和MWArray.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); } } }