arrays - 将嵌套结构数组 reshape 为具有不同大小元素的元胞数组

标签 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

同样,我想将 a(:).b.c(:) 的所有 d 值放入一个 cell array 中包含 1 x cells 个细胞。

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

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

abc 使用之前的解决方案:

abc = [ab.c];

创建一个带有字段 d1x24 结构数组。我想过使用 Size 字段将此结果 reshape 为 cell array 但我不知道如何或是否可能。您是否有更好的方法而不使用循环且不使用 cellfun

最佳答案

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

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

关于arrays - 将嵌套结构数组 reshape 为具有不同大小元素的元胞数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45571366/

相关文章:

javascript - 如何为 Javascript 中的对象数组创建 cookie

python - Pandas:如何从现有列下的列表列表中插入新数据?

arrays - Matlab:通过扩展其向量来扩展矩阵

struct - Go Programming - 如何在 ExecuteTemplate 中传递两个结构

c - 具有指向下一个结构的指针的结构?

c++ - 你如何访问 vector 对象的成员变量并重载它?

javascript - 如何检查二维数组是否包含字符串?

javascript - 循环遍历页面中的对象,如果页面包含键,则追加值

MATLAB 编程 GUI 列表框值及其引用的数据

matlab - 在 matlab 中使用 rand 生成限制之间的数字