Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.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
Can';t在结构matlab的字段上迭代_Matlab - Fatal编程技术网

Can';t在结构matlab的字段上迭代

Can';t在结构matlab的字段上迭代,matlab,Matlab,我目前正在使用matlab,我试图从我拥有的结构中提取一些数据,但这似乎不像我想象的那么容易 structExample = 1x100000 fieldnames(structExample) ans = 6×1 cell array {'a'} {'b'} {'c'} {'d'} {'e'} {'f'} 我对字段“b”中保存的值感兴趣。 当我键入structExample.b时,它会打印出所有的值,但当我这样做时 values =

我目前正在使用matlab,我试图从我拥有的结构中提取一些数据,但这似乎不像我想象的那么容易

structExample = 1x100000
fieldnames(structExample)

ans =

  6×1 cell array

    {'a'}
    {'b'}
    {'c'}
    {'d'}
    {'e'}
    {'f'}
我对字段“b”中保存的值感兴趣。 当我键入structExample.b时,它会打印出所有的值,但当我这样做时

values = structExample.b
它只保存第一个值([1.2,5.33])例如,b'有两个值

[1.2,5.33],1x86双精度,1x120双精度

我的目标是能够使用cdfplot()绘制它们 所以我想可以迭代字段中的所有值,并将它们保存在一个单独的数组中。但是我不知道如何遍历它,因为structExample.b只接受第一个值。有什么想法吗

编辑:
structExample.b(3)返回

应为大括号或点索引表达式的一个输出,但 共有41817项结果


访问的字段时,它将返回一组值。默认情况下,仅将列表中的第一个值指定给单个变量。如果要捕获所有这些值,必须使用
[]
(对于a)或
{}
(对于a)收集它们。由于要处理每个结构中不同大小的数据集,因此需要使用单元格数组:

values = {structExample.b};
因此,
值{1}
将包含
[1.2,5.33]
值{2}
将包含
1x86双精度
,等等

对于要迭代结构数组的情况,必须按照正确的顺序对数组元素和字段进行索引。您应该首先对元素进行索引(这将为您提供数组中的单个结构元素),然后对所需字段进行索引:

value = structExample(3).b;  % Field b of the third array element
对于要从结构数组中的已索引元素子集收集字段的其他情况,必须从上面组合索引和收集方案。例如:

values = {structExample([structExample.a] == 1).b};

这将把
structExample
中的所有
a
字段值收集到一个数组中,找到它们等于
1
的a,用该逻辑数组索引
structExample
数组,然后从该子数组中收集字段
b
的值,并将它们放在单元格数组中。

如果我可以补充一个问题,是否有一种基于“a”值保存数据的简洁方法。示例:values1=[structExample.b]如果“a”==1迭代的问题是,当我调用length(structExample.b)时,它表示它有太多的值,正如gnovice所解释的,您需要将数据封装在数组中。所以
length([structExample.b])
应该可以工作