assign values to a matrix without a loop

3 vues (au cours des 30 derniers jours)
Victor Hugo Cantú
Victor Hugo Cantú le 26 Fév 2019
Commenté : KSSV le 27 Fév 2019
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 commentaires
madhan ravi
madhan ravi le 27 Fév 2019
not clear
Victor Hugo Cantú
Victor Hugo Cantú le 27 Fév 2019
Modifié(e) : Victor Hugo Cantú le 27 Fév 2019
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 ?

Connectez-vous pour commenter.

Réponse acceptée

KSSV
KSSV le 27 Fév 2019
Modifié(e) : KSSV le 27 Fév 2019
[m,n] = size(P) ;
I = repmat((1:m)',1,2) ;
idx = sub2ind(size(P),I,A) ;
iwant = P(idx)
  2 commentaires
Victor Hugo Cantú
Victor Hugo Cantú le 27 Fév 2019
thank you very much ! it works ! in my exampe m = 10.
KSSV
KSSV le 27 Fév 2019
Oh.....yes..m = 10. Edited the code.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by