Matlab - 使用字符串值索引数组

标签 matlab

我有一个包含 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/

相关文章:

matlab - 在 matlab 中实现树的最佳方法是什么?

matlab - 组织 MATLAB 类(class)的最佳方式?

matlab - 在 matlab 中更改过滤器(B,A,X)并出现内存不足错误

arrays - 数组中每个类实例的调用方法(Matlab)

matlab - 具有多个文本和 num2str 元素的一根线图标题

Matlab 替换轴范围

matlab - 如何在 MATLAB 中生成多重二维高斯图像分布

matlab - 如何获得最终的特征?

matlab - 向具有特定均值的图像添加泊松噪声。

matlab - 如何防止物体被Matlab中的camlight照亮?