我有一个名为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} ...}
解决方案:
我需要每个答案的一部分,所以这是对我有用的解决方案:来自Andrew Lazarus:
allNames = arrayfun(@(x) x.name, [allData{:}], 'UniformOutput', false);
然后,来自gnovice:
allNames = vertcat(allNames{:});
感谢两位!