How does ismember and assert work in this code?

7 Ansichten (letzte 30 Tage)
Masha
Masha am 2 Feb. 2023
Kommentiert: Voss am 3 Feb. 2023
Previously, I raised a question of how to generate a matrix of only masses; provided that a matrix A is given that contains the object list and a matrix B that contains the objects + their masses. I am new to MATLAB and I want to know how the code works. Thank you!
A = ["C"; "A"; "E"; "F"; "I"]
A = 5×1 string array
"C" "A" "E" "F" "I"
B = ["A", 1;"B", 34;"C" 56;"D" 32;"E",11;"F",8;"G", 7;"H",9;"I" 77]
B = 9×2 string array
"A" "1" "B" "34" "C" "56" "D" "32" "E" "11" "F" "8" "G" "7" "H" "9" "I" "77"
[ism,idx] = ismember(A,B(:,1));
assert(all(ism))
result = B(idx,:)
result = 5×2 string array
"C" "56" "A" "1" "E" "11" "F" "8" "I" "77"

Akzeptierte Antwort

Voss
Voss am 2 Feb. 2023
[ism,idx] = ismember(A,B(:,1)); returns
  • ism, a logical array the same size as A saying whether each element of A is in B(:,1), i.e., ism is true where the corresponding element of A exists in B(:,1) and ism is false where the corresponding element of A is not in B(:,1)
  • idx, the index in B(:,1) where the first instance of each element of A exists, or 0 if that element of A does not exist in B(:,1)
Examples to illustrate:
x = [10;50;70];
y = [10;30;50;70];
[ism,idx] = ismember(x,y)
ism = 3×1 logical array
1 1 1
idx = 3×1
1 3 4
x = [10;50;70];
y = [10;30;10;30;50;70];
[ism,idx] = ismember(x,y)
ism = 3×1 logical array
1 1 1
idx = 3×1
1 5 6
x = [10;20;70];
y = [10;30;10;30;50;70];
[ism,idx] = ismember(x,y)
ism = 3×1 logical array
1 0 1
idx = 3×1
1 0 6
assert is used in this case to make sure that all elements of A exist in B(:,1). If that's not the case, an error is thrown, execution of the code stops, and subsequent commands are not executed.
assert(all(ism))
Error using assert
Assertion failed.
References:

Weitere Antworten (0)

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Produkte


Version

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by