将嵌套结构数组重塑为具有不同大小元素的元胞数组
Reshaping nested struct arrays to cell array having elements with different sizes
我有一个与 类似的问题。这次嵌套结构的形式是这样的:
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
同样,我想将 a(:).b.c(:)
的所有 d
值放入包含 1 x cells
个单元格的单个 cell array
中。
这是我使用 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
的更好方法?
您可以使用 mat2cell
执行此操作,如下所示:
ab = [a.b];
abc = [ab.c];
abcd = mat2cell([abc.d], 1, [ab.Size]);
我有一个与
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
同样,我想将 a(:).b.c(:)
的所有 d
值放入包含 1 x cells
个单元格的单个 cell array
中。
这是我使用 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
的更好方法?
您可以使用 mat2cell
执行此操作,如下所示:
ab = [a.b];
abc = [ab.c];
abcd = mat2cell([abc.d], 1, [ab.Size]);