assign values to a matrix without a loop

1 回表示 (過去 30 日間)
Victor Hugo Cantú
Victor Hugo Cantú 2019 年 2 月 26 日
コメント済み: KSSV 2019 年 2 月 27 日
I want to access to some elements of a matrix.
I have a matrix P :
P = [1 2 3 4 5 6 7 8
2 1 3 4 5 6 7 8
3 4 2 1 5 6 7 8
4 3 5 2 6 1 7 8
5 4 6 3 7 2 8 1
6 5 7 4 8 3 9 2
7 8 6 9 5 10 4 11
8 7 9 10 6 11 5 12
9 10 8 11 7 12 6 13
10 9 11 8 12 7 13 6];
and a matrix A :
A = [5 4
2 8
1 5
4 3
2 6
2 3
1 3
4 6
4 6
5 8];
I want to obtain the A element of P in S, for example
S(1,:) = [5 4]
S(2,:) = [1 8]
S(3,:) = [3 5]
...
S(9,:) = [11 12]
S(10,:) = [12 6]
I konw how to do it with a for loop, but, is there a way to do it without any loop ?
  2 件のコメント
madhan ravi
madhan ravi 2019 年 2 月 27 日
not clear
Victor Hugo Cantú
Victor Hugo Cantú 2019 年 2 月 27 日
編集済み: Victor Hugo Cantú 2019 年 2 月 27 日
for being clear, I put the way to do it using a for loop
for i = 1:size(A,1)
S(i,:) = P(i,A(i,:));
end
How can I do the same without the for loop ?

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

採用された回答

KSSV
KSSV 2019 年 2 月 27 日
編集済み: KSSV 2019 年 2 月 27 日
[m,n] = size(P) ;
I = repmat((1:m)',1,2) ;
idx = sub2ind(size(P),I,A) ;
iwant = P(idx)
  2 件のコメント
Victor Hugo Cantú
Victor Hugo Cantú 2019 年 2 月 27 日
thank you very much ! it works ! in my exampe m = 10.
KSSV
KSSV 2019 年 2 月 27 日
Oh.....yes..m = 10. Edited the code.

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by