将C#object []传递给Matlab Dll方法

时间:2016-04-13 19:46:39

标签: c# arrays matlab matlab-deployment variadic-functions

我正在尝试使用参数数组params关键字将C#对象数组传递给Matlab方法。我的Matlab方法符合.net程序集Dll。这是我简单的c#方法:

public void Method1(params object[] objArg)
{           
    _mMExt.mMethod1((MWArray[])objArg);
}

我使用varargin作为我的Matlab函数mMethod1的输入:

function mMethod1(varargin)
    nVarargs = length(varargin);
end

问题是当我通过这样做将object []转换为MWArray []时:

(MWArray[])objArg

似乎我可以使用(MWArray)object1将C#对象转换为MWArray,但它不允许我将对象数组转换为MWArray数组。

这可能吗?如果是这样,怎么样?

提前致谢。

1 个答案:

答案 0 :(得分:2)

这是我测试的小例子。

假设您使用MATLAB Compiler SDK

将以下MATLAB函数编译到.NET程序集中

myFunction.m

ankit is here3

现在在你的C#程序中,你可以通过传递一个可变数量的输入参数来调用函数function myFunction(varargin) for i=1:nargin disp(varargin{i}); end end ,如下所示:

Program.cs的

myLib.myClass.myFunction

这相当于明确写作:

using System;
using MathWorks.MATLAB.NET.Arrays;
using MathWorks.MATLAB.NET.Utility;
using myLib;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("calling myFunction(varargin)...");
        CallMyFunction(1, 2.0f, 3.14, "str4");
    }

    static void CallMyFunction(params MWArray[] varargin)  // or object[]
    {
        myClass obj = new myClass();
        obj.myFunction(varargin);
    }
}