将C#object []传递给Matlab Dll方法 [英] Pass C# object[] to Matlab Dll method
问题描述
我正在尝试使用参数数组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屋!