Aide pour vectorisation d'une partie d'un code
Voilà y a un moment on m'a conseillé de vectoriser mes programmes afin de les optimiser,mais je n'arrive pas à optimiser mon code :oops:
voici une partie de mon programme que je veux vectoriser :
Si j'ai une matrice P(m=3,n=9) :
Par exemple ;
Code:
1 2 3
| P =[ 9 8 5 7 2 4 1 6 3
9 8 5 7 2 4 6 1 3
9 8 5 7 2 4 6 3 1] |
Je souhaite construire la matrice PP ((n-2)*m,n) où
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| PP=[9 8 5 7 2 4 1 6 3
9 8 5 7 2 4 6 1 3
9 8 5 7 2 4 6 3 1
9 7 5 8 2 4 1 6 3
9 7 5 8 2 4 6 1 3
9 7 5 8 2 4 6 3 1
9 6 5 8 2 4 1 7 3
9 6 5 8 2 4 7 1 3
9 6 5 8 2 4 7 3 1
9 5 6 8 2 4 1 7 3
9 5 6 8 2 4 7 1 3
9 5 6 8 2 4 7 3 1
9 4 6 8 2 5 1 7 3
9 4 6 8 2 5 7 1 3
9 4 6 8 2 5 7 3 1
9 3 6 8 2 5 1 7 4
9 3 6 8 2 5 7 1 4
9 3 6 8 2 5 7 4 1
9 2 6 8 3 5 1 7 4
9 2 6 8 3 5 7 1 4
9 2 6 8 3 5 7 4 1] |
Pour calculer PP j’ai écrit ce code :
Code:
1 2 3 4 5 6
| PP=zeros((n-2)*m,n);
PP(1:m,:)=P;
clear P
for r=n-1:-1:3
PP((n-r)*m+1:(n-r+1)*m,:)=PP((n-(r+1))*m+1:(n-(r+1)+1)*m,:)-((r-1)-r)*(PP((n-(r+1))*m+1:(n-(r+1)+1)*m,:)==r-1)+((r-1)-r)*(PP((n-(r+1))*m+1:(n-(r+1)+1)*m,:)==r);
End |
Est ce qu'il est possible d'optimiser ce calcul ? (trouver PP sans boucle )
Merci d'avance pour votre aide :