将 .net 的 System.Int32[] 转换为 Matlab 矩阵

4
我开发了一个C# dll程序集,其中有一个返回泛型列表 - List<T> 的方法。我正在从Matlab中调用此方法,并将返回值作为 System.Int32[]接收。
如何将这种类型转换为Matlab矩阵(或单元格),以便在Matlab内更加自由地使用它?
更好的办法是,如果被Matlab调用时可以使dll自动返回'Matlab样式'数组吗?

到最后一句话:我怀疑在静态语言中,函数能够根据调用者返回不同类型。我认为这是一个相当令人困惑的设计。相反,我会创建两个不同的方法,例如 getListgetMatlabMatrix - phipsgabler
2个回答

6
假设我们有以下类型为 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[]              

0

MATLAB Builder NE 的附加组件有望解决您的问题。请尝试使用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接