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-

 採用された回答

Dyuman Joshi
Dyuman Joshi 2023 年 1 月 17 日

2 投票

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 件のコメント

Shin
Shin 2023 年 1 月 17 日
Hi Dyuman Joshi, thanks for solution, it works well too, more simplify way.

サインインしてコメントする。

その他の回答 (2 件)

Abhinav
Abhinav 2023 年 1 月 17 日
編集済み: Abhinav 2023 年 1 月 17 日

1 投票

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 件のコメント

Shin
Shin 2023 年 1 月 17 日
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.

サインインしてコメントする。

prasanth s
prasanth s 2023 年 1 月 17 日

1 投票

code example is
ind = sub2ind(size(matrix),index,1:5);
new=matrix(ind)

1 件のコメント

Shin
Shin 2023 年 1 月 17 日
Hi Prasanth, thanks for your solution too, works as well, appreciate it.

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeCreating and Concatenating Matrices についてさらに検索

製品

リリース

R2022b

質問済み:

2023 年 1 月 17 日

コメント済み:

2023 年 1 月 17 日

Community Treasure Hunt

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

Start Hunting!

Translated by