将C#object []传递给Matlab Dll方法 [英] Pass C# object[] to Matlab Dll method

查看:78
本文介绍了将C#object []传递给Matlab Dll方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am trying to pass a C# object array to a Matlab method using parameter array params keyword. My Matlab method is complied to a .net assembly Dll. Here is my simple c# method:

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

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

I am using varargin as input for my Matlab function mMethod1:

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

问题是当我通过执行以下操作将object []转换为MWArray []时:

The issue is when I am converting object[] to MWArray[] by doing this:

(MWArray[])objArg

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

It seems that I can use (MWArray)object1 to convert C# object to MWArray, but it doesn't let me to convert an array of object to an array of MWArray.

这可能吗?如果可以,怎么办?

Is this possible? if so, how?

谢谢.

推荐答案

这是我测试过的一个小例子.

Here is small example I tested.

假设您使用 将以下MATLAB函数编译为.NET程序集MATLAB编译器SDK :

Say you compiled the following MATLAB function into a .NET assembly using the MATLAB Compiler SDK:

function myFunction(varargin)
    for i=1:nargin
        disp(varargin{i});
    end
end

现在在您的C#程序中,您可以通过将可变数量的输入参数传递给函数myLib.myClass.myFunction来简单地调用它,如下所示:

Now in your C# program, you can simply call the function myLib.myClass.myFunction by passing it a variable number of input arguments like this:

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);
    }
}

这等效于显式编写:

MWArray[] varargin = new MWArray[4];
varargin[0] = new MWNumericArray(1);
varargin[1] = new MWNumericArray(2.0f);
varargin[2] = new MWNumericArray(3.14);
varargin[3] = new MWCharArray("str4");

myClass obj = new myClass();
obj.myFunction(varargin);

这篇关于将C#object []传递给Matlab Dll方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆