对象的数组属性矩阵

时间:2016-04-25 22:51:42

标签: matlab

我有一个类数组(我们称之为a,大小为Mx1),它包含一个保存1xN数组的属性(feature)。我正在尝试获取一个新的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 个答案:

答案 0 :(得分: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);