【发布时间】:2017-08-07 12:30:16
【问题描述】:
在 MATLAB 中,我有一个以下形式的结构数组:
a(1).b.c = rand(1,10);
a(1).b.cSize = length(a(1).b.c);
a(2).b.c = rand(1,11);
a(2).b.cSize = length(a(2).b.c);
a(3).b.c = rand(1,12);
a(3).b.cSize = length(a(3).b.c);
a(4).b.c = rand(1,13);
a(4).b.cSize = length(a(4).b.c);
a(5).b.c = rand(1,14);
a(5).b.cSize = length(a(5).b.c);
a(6).b.c = rand(1,15);
a(6).b.cSize = length(a(6).b.c);
我想创建一个单元格数组 c,其中包含嵌套结构的不同大小的字段 a.b.c,而不使用 for 循环。
我尝试了以下方法:
c = {a.b.c}
这不起作用并返回以下错误消息:
期望大括号或点索引表达式有一个输出, 但有 6 个结果。
目前我发现的最佳解决方案如下
cellfun(@(x) x.c, {a.b}, 'UniformOutput', false)
是否有不使用cellfun 的更快解决方案?也许是一些reshape 命令?
【问题讨论】: