Extracting elements from a matrix

12 visualizzazioni (ultimi 30 giorni)
Lenilein
Lenilein il 14 Giu 2020
Commentato: Lenilein il 15 Giu 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!

Risposta accettata

KSSV
KSSV il 14 Giu 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 Commento
Lenilein
Lenilein il 15 Giu 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) ;

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by