我正在尝试使用参数数组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数组。
这可能吗?如果是这样,怎么样?
提前致谢。
答案 0 :(得分:2)
这是我测试的小例子。
假设您使用MATLAB Compiler SDK:
将以下MATLAB函数编译到.NET程序集中ankit is here3
现在在你的C#程序中,你可以通过传递一个可变数量的输入参数来调用函数function myFunction(varargin)
for i=1:nargin
disp(varargin{i});
end
end
,如下所示:
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);
}
}