我有1个字段的matlab数据1x617 stuct,每行有4个字段的1x1结构。我如何提取数据以获得617数据的第4个字段,第4个字段是nx1的两倍。由于在MATLAB中提取结构文件的第四个字段
回答
根据您的变量结构,可有时通过简单地索引引用它解决。然而,要收集结构变量的数组中的一个特定字段数据的情况下,我会建议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
上面的代码建立一个1x617 stuct用1场,并且每行具有4个字段的1x1结构。在这里我假设每行中第4个字段的名称是相同的。
现在使用structval
r = structval(s,'d');
结果是1x617单元阵列。如果你碰巧各项指标(如NX1阵列)在有该字段相同的大小,然后用
r = structval(s,'d','collapse',true);
返回一个nx617阵列
嗨史蒂芬,我已经试过MSD = stuctval(diffAnalysisRes1,diffAnalysisRes1.fullDim.normDiffCoef) 但未定义matlab的函数或变量“structval”。我的数据是1x617结构1字段(文件名是“diffAnalysisRes1”)每行都有1x1结构与4个字段我想收集617(文件名“diffAnalysis1(1).fullDim.normDiffCoef”的所有第四个数据到“diffAnalysis1( 617).fullDim.normDiffCoef“ –
'structval'不是一个内置函数,它是Matlab的File Exchange上的一个免费的分布式函数,您必须首先从文件exchagne下载'structval'并将其放在工作目录中。你的第二个参数传递给函数必须是一个字符串变量(见我的例子)。所以它可能看起来像** structval(diffAnalysisRes1,“normDiffCoef”)** –
太感谢你了它的工作原理 –
- 1. 从阵列的Matlab的结构提取单个结构
- 2. 在Matlab中读取一个大的结构化文件
- 3. 子集中的每个字段的一个MATLAB结构
- 4. 如何动态访问MATLAB中结构的字段字段?
- 5. 删除空结构字段Matlab的
- 6. 当输入第四个数字时提高文本框事件
- 7. 除了结构的所有字段都保存到MATLAB中的文件中
- 8. 如何获得MATLAB中结构的最后一个字段?
- 9. 重命名MATLAB结构中的多个字段
- 10. 提取字母的结构
- 11. 如何在MATLAB中重命名结构数组中的字段?
- 12. 如何在matlab中的类/结构中运行foreach字段?
- 13. Matlab:获取单元内部结构的字段,2D结构阵列
- 14. 提取字段中的第一个数字
- 15. 从表字段获取第四个最大记录
- 16. 将结构体值提取到名为字段的变量中
- 17. 获取结构中的字段列表
- 18. 如何在Matlab中提取n * 1结构的特定字段中的所有值
- 19. 添加一个字段到一个matlab结构
- 20. 加载一个字段的结构变量(MATLAB)
- 21. 在MATLAB中对结构字段名进行迭代
- 22. cell在matlab中的结构
- 23. MATLAB读取一个pdb文件的特定字段
- 24. 球拍:从结构中提取字段ID
- 25. 使用条形图在matlab中绘制结构的两个字段
- 26. Matlab结构 - 只复制在一个字段中具有特定值的元素
- 27. 结构在MATLAB
- 28. 更新Matlab结构数组的每个元素中的一个字段
- 29. 如何从matlab中提取文件名中的数字?
- 30. 从分号分隔的文件中提取前5个字段
这是很难理解在所有结构你可以尝试写作树/文件夹结构吗?这甚至可以帮助你更好地理解问题。 – mpaskov
,我有数据为 'diffAnalysisRes1' 与1场1x617结构中,每一行是 'diffAnalysisRes1(1).fullDim' 到 'diffAnalysisRes1(617).fullDim' 1x1struct与4个字段。我想收集第4个字段的好名字是'diffAnalysisRes1(1).fullDim.normDiffCoef'到'diffAnalysisRes1(617).fullDim.normDiffCoef'。我希望有一个收集所有的617个数据由于第四场命令 –