Extracting elements from a matrix

3 visualizaciones (últimos 30 días)
Lenilein
Lenilein el 14 de Jun. de 2020
Comentada: Lenilein el 15 de Jun. de 2020
Hello,
I have a column matrix A with 50 elements and a small column matrix B with 5 elements. I would like to determine the values of the 5 indices i of A for which the value of A(i) is equal to one of the 5 elements of B.
Then there is a column matrix C with 50 elements and I would like to extract all elements of C for the indices determined above in a new matrix D (of 5 elements).
Can someone show me a good way to perform these operations?
I tried to set up a for-loop to go through every single element of A but I don't know how to express that A(i) should be equal to any of the elements of B (in the nested if-loop). Also I am not sure of the best is to save the obtained indices in a new matrix for extracting elements from C.
Many thanks!

Respuesta aceptada

KSSV
KSSV el 14 de Jun. de 2020
% Random data for demo
A = rand(50,1) ;
B = A(randperm(50,5)') ; % select five elements of A randomly
C = rand(50,1) ;
[c,ia] = ismember(A,B) ; % get the indices of B in A
D = C(c) ;
  1 comentario
Lenilein
Lenilein el 15 de Jun. de 2020
Thank you, it was very helpful!
From what I read in documentation, the answer in your example should be:
[c,ia] = ismember(B,A) ; % get the indices of B in A
D = C(ia) ;

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

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

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by