我有一个单元阵列allData
,它是 Nx1。每个单元包含一个具有names
属性的结构(名称是一个自定义对象,但如果您愿意,可以将其视为字符串的单元数组)。我想创建一个包含所有名称的单元格数组。例如,如果 N=3,那么这allData
是一个 3x1 元胞数组,那么以下将实现我的目标:
A = allData{1};
B = allData{2};
C = allData{3};
allNames = [A.names B.names C.names];
这种方法的问题是 N 很大并且根据输入而变化,所以我希望有一个聪明的方法可以使用cellfun
,但是我尝试过的所有事情都失败了(例如它不起作用allNames = [cellfun(@(x) {x.names}, allData)];
)。
更新:多亏了建议的解决方案,我可以将所有内容放入一个单元格数组中,其中每个单元格都包含一个单元格数组。我的目标是连接这些。或多或少,我所拥有的是:
{A.names B.names C.names}
而我想要但似乎无法得到的是
{A.names{1} A.names{2} ... A.names{end} B.names{1} ... B.names{end} ...}
解决方案:我需要以下每个答案的一部分,所以这是对我有用的解决方案:
从安德鲁拉撒路:
allNames = arrayfun(@(x) x.name, [allData{:}], 'UniformOutput', false);
然后,从gnovice:
allNames = vertcat(allNames{:});
谢谢两位!!