我已经开发了C#dll作为程序集,它有一个方法返回一个通用列表 - List<T>
。 我从Matlab调用这个方法,得到返回值为System.Int32[]
。将.net System.Int32 []转换为matlab矩阵
如何将此类型转换为Matlab矩阵(或单元格)以便在Matlab中更自由地使用它?
更好的是,我可以让DLL自动返回'Matlab风格'数组,如果它被Matlab调用?
我已经开发了C#dll作为程序集,它有一个方法返回一个通用列表 - List<T>
。 我从Matlab调用这个方法,得到返回值为System.Int32[]
。将.net System.Int32 []转换为matlab矩阵
如何将此类型转换为Matlab矩阵(或单元格)以便在Matlab中更自由地使用它?
更好的是,我可以让DLL自动返回'Matlab风格'数组,如果它被Matlab调用?
MATLAB Builder NE附加组件有望解决您的问题。尝试一下。
假设我们有System.Int32[]
类型(如你的C#函数返回)以下阵列:
arr = NET.createArray('System.Int32',5);
for i=1:5
arr.Set(i-1, i);
end
现在转换为MATLAB矩阵,我们可以简单地这样做:
M = double(arr)
或更具体:
M = int32(arr)
结果:
>> whos
Name Size Bytes Class Attributes
M 1x5 20 int32
arr 1x1 60 System.Int32[]
到最后一句:我怀疑一个函数可能会以静态语言返回一个基于调用者的不同类型。我也会说这是一个相当混乱的设计。相反,我会做两种不同的方法,例如'getList'和'getMatlabMatrix'。 – phg