How to extract value from a matrix with given indices

30 Ansichten (letzte 30 Tage)
Shin
Shin am 17 Jan. 2023
Kommentiert: Shin am 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-

Akzeptierte Antwort

Dyuman Joshi
Dyuman Joshi 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];
s=size(matrix);
new=matrix(sub2ind(s,index,1:s(2)))
new = 1×5
1 6 0 3 7
  1 Kommentar
Shin
Shin am 17 Jan. 2023
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
Shin
Shin am 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.

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
Shin
Shin am 17 Jan. 2023
Hi Prasanth, thanks for your solution too, works as well, appreciate it.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Produkte


Version

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by