Bonsoir;
supposons que j'ai : une matrice par exemple A d'ordre 5 et une matrice P contient des indices de lignes et de colonnes de la matrice A
Je cherche une matrice B a partir de A et « par exemple » n=5 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 A=[3 4 5 2 1;1 2 4 6 7;3 4 8 7 9;2 4 3 7 8 ;6 4 2 9 7] ; P=[2 3 4 1 5;4 5 2 1 3;3 2 1 5 4;4 2 5 3 1;1 5 2 3 4 ;2 4 3 1 5] ;
Pour B j’ai ce code :
Donc B soit :
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 n=5; B=zeros((n-1)*(n-2)/2,2); k=2:n-1; B(1:n-2,:)=[ones(n-2,1)*1 k']; for i=2:n-2 k=i+1:n-1; B((i-1)*n-((i+1)/2*i)+2:(i-1)*n-((i+1)/2*i)+2+(n-(i+2)),:) = [i*ones(n-(i+1),1) k'] ; end B1=[B(:,1) ones(size(B,1),1)*n B(:,end) ]; rows = B1(:,1:2); cols = B1(:,2:3); C= sum( A( sub2ind(size(A),rows,cols) ) ,2) ; rows = B(:,1); cols = B(:,2); C1=A( sub2ind(size(A),rows,cols) ); C-C1; idx=find(sort(C-C1,'descend')>=max(C-C1)-1&sort(C-C1,'descend')>0) [~,IX]=sort(C-C1,'descend'); B=B(IX,:) B(idx,:)
B=[3 4 ; 2 4] ;
1) vos remarques sur le code ?
2) J'aimerais extraire de P une nouvelle matrice M dont les lignes
contenant au moins une ligne de B par exemple pour
on a :
Code : Sélectionner tout - Visualiser dans une fenêtre à part B(1, :)
Code : Sélectionner tout - Visualiser dans une fenêtre à part 2 3 4 1 5 ; 1 5 2 3 4 ; 2 4 3 1 5
Code : Sélectionner tout - Visualiser dans une fenêtre à part B(2, :) :‘’
Code : Sélectionner tout - Visualiser dans une fenêtre à part 4 2 5 3 1 ; 2 4 3 1 5
Il ya une répétition’’
Alors M soit :
Comment trouver M ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part M=[2 3 4 1 5 ; 1 5 2 3 4 ; 2 4 3 1 5 ; 4 2 5 3 1 ] ?
Je vous remercie d’avance.
Partager