我有一个类数组(我们称之为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}')
然而,我觉得应该有一种方法可以做到这一点,而无需转换为单元格,切换尺寸,然后转换为矩阵。我是正确的还是这是解决问题的最佳方法?我无法在文档中找到任何此类功能。
答案 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);