Extracting elements from a matrix

2 Ansichten (letzte 30 Tage)
Lenilein
Lenilein am 14 Jun. 2020
Kommentiert: Lenilein am 15 Jun. 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!

Akzeptierte Antwort

KSSV
KSSV am 14 Jun. 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 Kommentar
Lenilein
Lenilein am 15 Jun. 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) ;

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by