Matlab结构体数组字段提取报错,如何无循环获取数据?
提取结构体数组字段的无循环方法
你遇到的问题是因为data(:).field返回的是逗号分隔的列表(这里就是1000个单独的标量值),MATLAB默认要求这类索引表达式返回单个输出,所以直接调用会报错。
不用循环的话,有两种常用解决方法:
方法一:方括号直接拼接(适用于字段为标量的情况)
把索引结果用方括号包裹,就能把所有字段值拼接成一个一维数组:
field_values = [data(:).field];
比如你的示例里,执行后field_values就是[5, 3, -4, ...],直接可以用来绘图。
方法二:cell数组转换(适用于字段为非标量的情况)
如果你的field是数组或者其他非标量数据,先把逗号分隔列表转成cell数组,再按需转换成矩阵(需各字段维度兼容):
field_cell = {data(:).field}; field_values = cell2mat(field_cell);
如果各字段的数组维度不统一,保留cell数组直接使用即可。
错误提示回顾:
Expected one output from a curly brace or dot indexing expression, but there were 1000 results.
内容的提问来源于stack exchange,提问作者Mr Robot
相关产品推荐
相关产品推荐

