How to extract value from a matrix with given indices

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-

 Akzeptierte Antwort

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 Kommentar

Hi Dyuman Joshi, thanks for solution, it works well too, more simplify way.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Abhinav
Abhinav am 17 Jan. 2023
Bearbeitet: Abhinav am 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 Kommentar

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.

Melden Sie sich an, um zu kommentieren.

prasanth s
prasanth s am 17 Jan. 2023
code example is
ind = sub2ind(size(matrix),index,1:5);
new=matrix(ind)

1 Kommentar

Hi Prasanth, thanks for your solution too, works as well, appreciate it.

Melden Sie sich an, um zu kommentieren.

Kategorien

Produkte

Version

R2022b

Gefragt:

am 17 Jan. 2023

Kommentiert:

am 17 Jan. 2023

Community Treasure Hunt

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

Start Hunting!

Translated by