将嵌套的struct数组重新整形为具有不同大小的元素的单元格数组

时间:2017-08-08 14:41:25

标签: arrays matlab struct nested cell-array

我对previous one提出了类似的问题。这次嵌套结构的形式如下所示:

Sizes = [2, 5, 8, 6, 3];
cells = 5;
for i = 1:cells
    for j = 1:Sizes(i)
        a(i).b.c(j).d = rand(1,1);
    end
    a(i).b.Size = Sizes(i);
end

我想再次将d的所有a(:).b.c(:)值放入包含cell array个单元格的单个1 x cells中。

以下是我使用cellfun的解决方案,但我想避免使用此功能:

ab = [a.b];
abc = {ab.c};
abcd = cellfun(@(x) [x.d], abc, 'UniformOutput', false);

使用abc的先前解决方案:

abc = [ab.c];

使用字段1x24创建一个d结构数组。我想过使用Size字段将此结果重新整形为cell array,但我不知道如何或是否可能。如果没有使用循环且没有cellfun,你有更好的appraoch吗?

1 个答案:

答案 0 :(得分:2)

您可以使用mat2cell执行此操作,如下所示:

ab = [a.b];
abc = [ab.c];
abcd = mat2cell([abc.d], 1, [ab.Size]);