2012-06-15 145 views
4

我已经开发了C#dll作为程序集,它有一个方法返回一个通用列表 - List<T>。 我从Matlab调用这个方法,得到返回值为System.Int32[]将.net System.Int32 []转换为matlab矩阵

如何将此类型转换为Matlab矩阵(或单元格)以便在Matlab中更自由地使用它?

更好的是,我可以让DLL自动返回'Matlab风格'数组,如果它被Matlab调用?

+0

到最后一句:我怀疑一个函数可能会以静态语言返回一个基于调用者的不同类型。我也会说这是一个相当混乱的设计。相反,我会做两种不同的方法,例如'getList'和'getMatlabMatrix'。 – phg

回答

0

MATLAB Builder NE附加组件有望解决您的问题。尝试一下。

5

假设我们有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[]