Extracting elements from a matrix

2 views (last 30 days)
Lenilein
Lenilein on 14 Jun 2020
Commented: Lenilein on 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!

Accepted Answer

KSSV
KSSV on 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 Comment
Lenilein
Lenilein on 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) ;

Sign in to comment.

More Answers (0)

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!