MATLAB Answers

Alternative to 'ismember' for structures

40 ビュー (過去 30 日間)
Enrico Anderlini
Enrico Anderlini 2016 年 8 月 26 日
コメント済み: Enrico Anderlini 2016 年 8 月 26 日
Hello! I have a structure, which I need to update at every step. However, I would like to include the update only if it has not been stored yet. This would be quite easy with a list and ismember. However, ismember does not work with structures. Has anyone got any suggestions? Thank you!
As an example, for greater clarity, consider the following problem:
A.a = 1;
A.b = 2;
A(2).a = 2;
A(2).b = 3;
A(3).a = 3;
A(3).b = 4;
B.a = 2;
B.b = 3;
Now, it is clear that B is contained within A (line 2, or B=A(2)).
If they were lists, I would use the command:
ismember(B,A,'rows);
What can I do if I would like to keep them as structures? Thank you!

  0 件のコメント

サインインしてコメントする。

採用された回答

Adam
Adam 2016 年 8 月 26 日
any( arrayfun( @(x) isequal( B, x ), A ) )
should do the job I think.

  1 件のコメント

Enrico Anderlini
Enrico Anderlini 2016 年 8 月 26 日
It does exactly what I need it to do. Thanks!

サインインしてコメントする。

その他の回答 (1 件)

Azzi Abdelmalek
Azzi Abdelmalek 2016 年 8 月 26 日
You can compare
ismember([B.a],[A.a])
ismember([B.b],[A.b])

  1 件のコメント

Enrico Anderlini
Enrico Anderlini 2016 年 8 月 26 日
Thank you! Your answer works too and it employs ismember. However, the other answer is more compact and results in a single boolean, which is what I needed to start with.

サインインしてコメントする。

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by