如何将 MATLAB 集成到 C# 中?

问题描述 投票:0回答:2

我有使用 C#.NET 实现的 UI 和在 MATLAB 中开发的图像处理程序。因此我需要知道一种将 MATLAB 集成到 C#.NET 中的方法,以将这两个进程作为一个系统使用......

c# matlab matlab-deployment system-integration
2个回答

0
投票

如何从 C#/.NET 中调用用户定义的 matlab 函数:

我在这里详细解释过一次。对于这种集成方法,您将需要 matlab 的部署工具,以便将您的 matlab 函数编译成可由 C#/.NET 引用的 dll 程序集。

总而言之,步骤如下:

1) 编写您的 matlab 函数(m 文件)并保存。您将从 C#/.NET 调用这些函数

2)在matlab中打开部署工具(deploytool)并将所有matlab m文件添加到包中,命名例如MyMatlabFunctions.prj

3)添加一个类来部署包,名称如MyMatlabClass。此类将包含 matlab 函数的 .NET 翻译(或编译)。

4)使用deploytool构建包MyMatlabFunctions.prj。生成的 MyMatlabFunctions.dll 将在我们的 Visual Studio 项目中引用。

5) 将与 matlab 相关的引用(dll)MatCode.dllMWarray.dll 添加到您的 Visual Studio 项目。

6) 编写调用 matlab 函数的 dll 转换的 C#/.NET 方法。下面是一个简单的例子:矩阵加法(addMatrices.m)

static public void SimpleMatrixAddition()
{
    double[,] a = { { 2, 3 }, { 5, 6 }, { 8, 9 } }; //Matrix 1
    double[,] b = { { 1, 2}, { 4, 5}, { 7, 8} };    //Matrix 2

    MWNumericArray arr1 = a;
    MWNumericArray arr2 = b;

    MyMatClass obj = new MyMatClass();

    // call matlab function (addMatrices.m)
    MWArray result = (MWNumericArray)obj.addMatrices((MWArray)arr1, (MWArray)arr2);

    // display matlab matrix
    Console.WriteLine("matlab matrix:\n" + result);
    Console.ReadKey();
}
© www.soinside.com 2019 - 2024. All rights reserved.