2016-04-25 73 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);