我有一个包含 20 个位置的预定义数组,对应于我 body 外的 20 个关节。关节用字符串值标记(例如“left_knee”、“head”、“left_eye”等)。
我想通过使用附加的字符串值来引用数组中的某个值。例如,我想存储观察到的关节的位置。最初数组中的所有位置都是 (-1 , -1)
然后如果我发现某个关节我想做一些像 Joints('left_knee') = [100 200]
。
我如何在 Matlab 中执行此操作?
最佳答案
struct
怎么样?
Joints.left_knee = [100 200];
Joints.head = [-1 -100];
获取所有带有 fieldnames
的字段,像这样动态地引用单个条目:
someVar = 'left_eye';
Joints.(someVar) = [200 250];
等如果你碰巧有多个关节,都需要相同类型的数据,但它们都属于同一个系统,你也可以制作多维结构:
Joints(1).left_knee = [100 200];
Joints(1).head = [-1 -100];
Joints(2).left_knee = [200 450];
Joints(2).head = [-10 -189];
Joints(3).left_knee = [-118 264];
Joints(3).head = [+33 78];
只是为了向您展示一些在多维结构上下文中有用的技术:
>> someVar = 'head';
>> Joints.(someVar) % will be expanded cell-array, 1 entry for each dimension
ans =
-1 -100
ans =
-10 -189
ans =
33 78
>> [Joints.(someVar)] % will collect those data in regular array
ans =
-1 -100 -10 -189 33 78
>> {Joints.(someVar)} % will collect those data in cell array
ans =
[1x2 double] [1x2 double] [1x2 double]
>> [A,B,C] = deal(Joints.(someVar)); % will assign data to 3 separate vars
A =
-1 -100
B =
-10 -189
C =
33 78
键入help struct
获取更多信息并了解相关功能。
关于Matlab - 使用字符串值索引数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13285857/