How does ismember and assert work in this code?

7 visualizaciones (últimos 30 días)
Masha
Masha el 2 de Feb. de 2023
Comentada: Voss el 3 de Feb. de 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"

Respuesta aceptada

Voss
Voss el 2 de Feb. de 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:
  2 comentarios
Masha
Masha el 3 de Feb. de 2023
Thank you!
Voss
Voss el 3 de Feb. de 2023
You're welcome!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Productos


Versión

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by