How to extract value from a matrix with given indices

36 vues (au cours des 30 derniers jours)
Shin
Shin le 17 Jan 2023
Commenté : Shin le 17 Jan 2023
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-

Réponse acceptée

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

Connectez-vous pour commenter.

Plus de réponses (2)

Abhinav
Abhinav le 17 Jan 2023
Modifié(e) : Abhinav le 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 commentaire
Shin
Shin le 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.

Connectez-vous pour commenter.


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

Connectez-vous pour commenter.

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Produits


Version

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by