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

Posted

技术标签:

【中文标题】如何找到特定成员具有特定值的第一个结构?【英文标题】:How do I find the first struct where a particular member has a specific value? 【发布时间】:2020-03-29 12:53:47 【问题描述】:

背景

我有一个名为 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 命令进行了一些研究,但这侧重于一个向量的成员。我的情况涉及具有多个成员的结构。以下是我正在尝试做的最接近的示例:

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

问题

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

【问题讨论】:

你能分享一些MATLAB代码来重现吗?没有截图 你的数据格式有点不清楚。您是否有结构元素的向量,或在其字段中存储向量的结构?第一个将被索引为STRUCT_A(2).anothermember,而第二个将被索引为STRUCT_A.anothermember(2) 另一个问题...在您的示例中,您是在寻找与1 相同的字段等于,还是在其中包含带有1 的数字的字段? @gnovice 我在上面给出的代码示例中冒号的右侧..如果这回答了你的问题。 【参考方案1】:

一个可能的解决方案:

% 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

【讨论】:

以上是关于如何找到特定成员具有特定值的第一个结构?的主要内容,如果未能解决你的问题,请参考以下文章

SQL / Hive 选择具有特定列值的第一行

如何初始化(或分配)具有特定默认值的结构(抽象数据类型)成员的值

仅包含具有特定列值的第一个条目

Python二分搜索类函数,用于查找排序列表中大于特定值的第一个数字

如何在多个实例的python上找到特定字符的索引?

如何找到具有特定“类型”属性值的 <script> 元素?