comparing categorical arrays in terms of content

4 Ansichten (letzte 30 Tage)
alpedhuez
alpedhuez am 24 Jan. 2021
Kommentiert: alpedhuez am 24 Jan. 2021
I have two categorical arrays A and B. I want to idenitfy
  • common elements of A and B
  • elements that are in one of them but not in both of them
  3 Kommentare
alpedhuez
alpedhuez am 24 Jan. 2021
Does setdiff work in this context? https://www.mathworks.com/matlabcentral/answers/39735-find-elements-in-one-array-not-in-another
KALYAN ACHARJYA
KALYAN ACHARJYA am 24 Jan. 2021
@Matt Gaidica provided the suffcient information, just use ismember, it is simple. Please refer MATLAB doc.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Adam Danz
Adam Danz am 24 Jan. 2021
ismember alone can answer the first point (common elements of A and B) but not the 2nd since it only tests whether elements of A are in B but not whether elements of B are in A. For example,
A = categorical({'a' 'b' 'c' 'e'}');
B = categorical({'a' 'b' 'c' 'd'}');
[LIA,LOCB] = ismember(A,B)
LIA = 4x1 logical array
1 1 1 0
LOCB = 4×1
1 2 3 0
setxor can show their differences.
[C,~,~] = setxor(A,B)
C = 2×1 categorical array
e d
  3 Kommentare
Adam Danz
Adam Danz am 24 Jan. 2021
Check out the first sentence of the documentation for each function. If that's not clear I'd be happy to explain.
You could also experiment to see what the differences are .
A = categorical({'a' 'b' 'c' 'e'}');
B = categorical({'a' 'b' 'c' 'd'}');
setdiff(A,B)
ans = categorical
e
setdiff(B,A)
ans = categorical
d
setxor(A,B)
ans = 2×1 categorical array
e d
setxor(B,A)
ans = 2×1 categorical array
d e
alpedhuez
alpedhuez am 24 Jan. 2021
Thank you.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Data Type Identification finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by