How to extract value from a matrix with given indices

33 visualizzazioni (ultimi 30 giorni)
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-

Risposta accettata

Dyuman Joshi
Dyuman Joshi il 17 Gen 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 Commento
Shin
Shin il 17 Gen 2023
Hi Dyuman Joshi, thanks for solution, it works well too, more simplify way.

Accedi per commentare.

Più risposte (2)

Abhinav
Abhinav il 17 Gen 2023
Modificato: Abhinav il 17 Gen 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 Commento
Shin
Shin il 17 Gen 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.

Accedi per commentare.


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

Prodotti


Release

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by