2016-04-25 60 views
0

我有一個類的數組(我們將其稱爲a,大小爲Mx1),其中包含一個屬性(feature),其中包含一個1xN數組。我試圖得到一個新的矩陣,它是MxN,其中包含對象的每個feature屬性的行。例如:對象的數組屬性矩陣

M = 3 
N = 4 
a(1,1).feature = [1 2 3 4] 
a(2,1).feature = [5 6 7 8] 
a(3,1).feature = [9 10 11 12] 

然後,給出了一些功能,答案將最終成爲:

ans = [1 2 3 4; 5 6 7 8; 9 10 11 12] 

目前,我一直在使用下列內容:

ans = cell2mat({a.feature}') 

但是我覺得應該有辦法做到這一點,而不必轉換爲單元格,切換尺寸,然後轉換爲矩陣。我是否正確或將這是解決問題的最佳方法?我沒有在文檔中找到任何這樣的功能。

回答

1

當您有一個對象數組並且使用點引用訪問屬性時,將返回comma separated list。此逗號分隔列表can be passed to a function並將顯示爲多個輸入參數。

對於您的情況,您可以將此逗號分隔列表傳遞給cat並指定您希望將每個值連接到第一維上的下一個值。因此,這會簡直成了:

features = cat(1, a.feature) 

%// 1  2  3  4 
%// 5  6  7  8 
%// 9 10 11 12 

這在功能上等同於:

features = cat(1, a(1).feature, a(2).feature, a(3).feature, ..., a(end).feature);