将 C# object[] 传递给 Matlab Dll 方法
Pass C# object[] to Matlab Dll method
我正在尝试使用参数数组 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 数组。
这可能吗?如果可以,怎么做?
提前致谢。
这是我测试过的小例子。
假设您使用 MATLAB Compiler SDK:
将以下 MATLAB 函数编译到 .NET 程序集中
myFunction.m
function myFunction(varargin)
for i=1:nargin
disp(varargin{i});
end
end
现在,在您的 C# 程序中,您可以通过向函数传递可变数量的输入参数来简单地调用函数 myLib.myClass.myFunction
,如下所示:
Program.cs
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);
我正在尝试使用参数数组 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 数组。
这可能吗?如果可以,怎么做?
提前致谢。
这是我测试过的小例子。
假设您使用 MATLAB Compiler SDK:
将以下 MATLAB 函数编译到 .NET 程序集中myFunction.m
function myFunction(varargin)
for i=1:nargin
disp(varargin{i});
end
end
现在,在您的 C# 程序中,您可以通过向函数传递可变数量的输入参数来简单地调用函数 myLib.myClass.myFunction
,如下所示:
Program.cs
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);