How to extract value from a matrix with given indices

32 views (last 30 days)
Hi there,I have a an array of index and a matrix such as
index = [2 4 3 1 5];
matrix = [5 2 5 3 4;
1 2 4 2 6;
7 5 0 9 3;
6 6 3 1 2;
3 6 8 2 7];
How can I extract the value from each column of the matrix with the given index to obtain a new array such as
new = [1 6 0 3 7];
Thanks.
-Shin-

Accepted Answer

Dyuman Joshi
Dyuman Joshi on 17 Jan 2023
index = [2 4 3 1 5];
matrix = [5 2 5 3 4;
1 2 4 2 6;
7 5 0 9 3;
6 6 3 1 2;
3 6 8 2 7];
s=size(matrix);
new=matrix(sub2ind(s,index,1:s(2)))
new = 1×5
1 6 0 3 7
  1 Comment
Shin
Shin on 17 Jan 2023
Hi Dyuman Joshi, thanks for solution, it works well too, more simplify way.

Sign in to comment.

More Answers (2)

Abhinav
Abhinav on 17 Jan 2023
Edited: Abhinav on 17 Jan 2023
index = [2 4 3 1 5];
matrix = [5 2 5 3 4;
1 2 4 2 6;
7 5 0 9 3;
6 6 3 1 2;
3 6 8 2 7];
new=[];
for i=1:length(index)
new(i)=matrix(index(i),i);
end
new
  1 Comment
Shin
Shin on 17 Jan 2023
Hi Abhinav, thank for the solution, however the code only display the last value with is "new = 7" in this case. After I modify a little on your code and I'm able to get all the value. Code as below.
index = [2 4 3 1 5];
matrix = [5 2 5 3 4;
1 2 4 2 6;
7 5 0 9 3;
6 6 3 1 2;
3 6 8 2 7];
indexNO = 5;
new = zeros(1,indexNO);
for i = 1:indexNO
new(1,i) = matrix(index(i),i);
end
new
Anyway, thanks again for you solution.

Sign in to comment.


prasanth s
prasanth s on 17 Jan 2023
code example is
ind = sub2ind(size(matrix),index,1:5);
new=matrix(ind)
  1 Comment
Shin
Shin on 17 Jan 2023
Hi Prasanth, thanks for your solution too, works as well, appreciate it.

Sign in to comment.

Products


Release

R2022b

Community Treasure Hunt

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

Start Hunting!