如何将MATLAB集成到C#中?

时间:2011-06-22 10:45:13

标签: c# matlab integrate matlab-deployment

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

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

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

我详细解释过一次here。对于这种集成方法,您需要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' s) MatCode.dll MWarray.dll 添加到Visual Studio项目中。

6)编写调用matlab函数的dll转换的C#/ .NET方法。下面是一个简单示例:Matrix Addition(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();
}