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
voici une partie de mon programme que je veux vectoriser :
Si j'ai une matrice P(m=3,n=9) :
Par exemple ;
Je souhaite construire la matrice PP ((n-2)*m,n) où
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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]
Pour calculer PP j’ai écrit ce code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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]
Est ce qu'il est possible d'optimiser ce calcul ? (trouver PP sans boucle )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Merci d'avance pour votre aide :
Partager