Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 将嵌套结构数组重塑为具有不同大小元素的单元数组_Arrays_Matlab_Struct - Fatal编程技术网

Arrays 将嵌套结构数组重塑为具有不同大小元素的单元数组

Arrays 将嵌套结构数组重塑为具有不同大小元素的单元数组,arrays,matlab,struct,Arrays,Matlab,Struct,在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(

在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的更快的解决方案?可能是某个
重塑
命令?

您可以从
a.b
创建一个结构数组,然后从数组中提取字段
c

ab = [a.b];
result = {ab.c}

为了好玩,这里是rahnema1答案的一行版本:

[result{1:numel(a)}] = subsref([a.b], substruct('.','c'));

不过,我强烈建议您不要在野外使用它,几乎没有人一读就明白这一点(这是一个很好的编码经验法则)。

感谢您的解决方案。请你们看一下我的,不同形式的嵌套结构。