“Nonscalar结构数组访问元素”的问题

5视图(30天)
你好,
我尝试访问的数据存储在一个这种类型的结构:
我想有轻松地访问所有的质量子系统为例,但是我无法做到,我试着:(我粘贴最后的完整代码)
系统(:).subsystem.mass
但它返回: 引用不存在的字段“子系统”。
真正的问题比这更多的系统,你有一个主意关于我可以访问所有群众中包含所有的子系统?
谢谢你的帮助!
我试图遵循这个MatLab教程,但似乎没有工作在我的例子中:
清晰的所有
clc
% %的结构
系统=结构();
system1.mass = 1000;
system1.CG = (0, 1, 2);
system1.subsystem.mass = (0, 10, 100);
system1.subsystem.CG = [0, 1, 2, 3, 4, 5, 6, 7, 8);
systems.system1 =系统化;
system2.CG = (0, 1, 2);
system2.mass = 1000;
system2.subsystem.mass = (0, 10, 100);
system2.subsystem.CG = [0, 1, 2, 3, 4, 5, 6, 7, 8);
systems.system2 =系统2;
systems.mass = 5000;
systems.CG =(10年,20年,30);
清晰的系统化的
清晰的系统2
% %访问数据
系统(:).subsystem.mass
2的评论
托马斯·弗尔涅
托马斯·弗尔涅 2021年6月7日
谢谢你的回答,
事实上CLEARALL并不是必须的,我重新创建这个问题在分开的文件所以这样工作就好。

登录置评。

接受的答案

1月
1月 2021年6月7日
您不能访问字段Matlab的深层嵌套的结构体。你需要一个循环。
2的评论
1月
1月 2021年6月7日
隐藏一个索引的字段名如“系统化”是一个糟糕的主意。深度嵌套结构是低效的,如果你需要访问嵌套的字段。所以重组数据可能是最好的方法。

登录置评。

答案(1)

Stephen23
Stephen23 2021年6月7日
编辑:Stephen23 2021年6月7日
sys = fakedata ()
sys =结构体字段:
系统化:[1×1 struct]系统2:[1×1 struct]质量:5000 CG: [10 20 30]
等于是= regexp(字段名(系统),“^系统\ d + $”,“匹配”);
等于是= (fnm {}):
等于是=1×2单元阵列
{“系统化”}{}“系统2”
有趣= @ (f) sys。(f) .subsystem.mass;
= cellfun(乐趣,等于是“大学”,0)
了=1×2单元阵列
{3×1双}{3×1双}
检查(提示未来:为假数据使用不同的值是一个简单的检查):
从{1}
ans = 3×1
0 10 100
{2}
ans = 3×1
0 10 100

标签

s manbetx 845


释放

R2020b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的