我有1个字段的matlab数据1x617 stuct,每行有4个字段的1x1结构。如何提取数据以获得617数据的第4个字段,第4个字段为nx1 double。感谢
答案 0 :(得分:0)
根据您的变量结构,有时可以通过简单的索引引用来轻松解决它。但是,在您要从struct变量数组中的某个特定字段收集数据的情况下,我建议在Matlab FileExchange上使用structval
这是链接:
Struct 2 array or cell for desiginated fieldname
让我们假设您的变量看起来像这样
for idx = 1:617
b.a = ones(1,1)*idx;
b.b = ones(2,1)*idx;
b.c = ones(3,1)*idx;
b.d = ones(4,1)*idx;
s(1,idx).a = b;
end
上面的代码创建了一个包含1个字段的1x617 stuct,每行包含1x1结构,包含4个字段。在这里,我假设每行中第4个字段的名称是相同的。
现在使用structval
r = structval(s,'d');
结果是 1x617 单元格数组。如果您在每个索引处碰巧具有相同的字段大小(例如 nx1 数组),请使用
r = structval(s,'d','collapse',true);
返回 nx617 数组