matlab - 如何找到特定成员具有特定值的第一个结构?
问题描述
背景
我有一个名为 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
出现a 的第一个结构anothermember_:
,然后返回somemember_
同一个结构中的值。我已经对命令进行了一些研究find
,但这侧重于一个向量的成员。我的情况涉及具有多个成员的结构。下面是我正在尝试做的最接近的例子:
上图显示了一个名为 的 4×4 幻方矩阵X
。我在上面的例子中试图做的是找到2
矩阵中的第一个,在这种情况下它位于位置 5。每次运行 Jenkins 构建时,这个 2 所在的位置都会改变。上面的例子涉及我更广泛问题的前半部分。但是,我不确定如何将此方法转换为结构,因此我的问题...
问题
如何找到所述结构的特定成员具有特定值的第一个结构?
解决方案
一个可能的解决方案:
% 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