我如何找到特定成员具有特定值的第一个结构?

时间:2019-12-04 16:39:55

标签: matlab struct find

背景

我有一个名为STRUCT_A的数据向量,其中包含以下结构。这些结构中的每一个都有从Jenkins构建中随机填充的子值。以下是此数据向量的一个实例的示例:

BEGIN STRUCT for STRUCT_A
    somemember_: 4
    anothermember_: 3
    location_: "New York"
END STRUCT for STRUCT _A

BEGIN STRUCT for STRUCT_A
    somemember_: 6
    anothermember_: 123
    location_: "South Bend"
END STRUCT for STRUCT_A

BEGIN STRUCT for STRUCT_A
   somemember_: 10
   anothermember_: 6
   location_: "Baton Rouge"
END STRUCT for STRUCT_A

您可以使用以下语法访问任何特定成员:STRUCT_A.anothermember(2)将返回123

问题和尝试的解决方法

我想找到1成员中出现anothermember_:的第一个结构,然后在该结构中返回somemember_的值。我已经对find命令进行了一些研究,但这主要针对一个向量的成员。我的情况涉及具有多个成员的结构。以下是我尝试做的最接近的示例:

enter image description here

上图显示了一个名为X的4×4幻方矩阵。在上面的示例中,我试图做的是找到矩阵中的第一个2,在这种情况下,它位于位置5。每次运行Jenkins构建时,这2的位置都会改变。上面的示例处理了我更广泛的问题的前半部分。但是,我不确定如何将此方法转换为结构,因此我的问题...

问题

如何找到第一个结构的特定成员具有特定值的结构?

1 个答案:

答案 0 :(得分:3)

可能的解决方案:

% Reproduction example
a = struct('somemember_',1);
b = struct('somemember_',2);
c = struct('somemember_',2);
struct_array = [a b c];

elementOfInterest = 2;

% Find index of first occurence of element of interest in the struct array
find([struct_array.somemember_] == elementOfInterest,1)

返回

2
相关问题