2012-06-15 180 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[]