MATLAB: Comment échanger quelques lignes au hasard entre les matrices A et B (la matrice B est choisie au hasard dans un ensemble de N matrices)

Par exemple, nous avons ‘ResultM’ qui donne 5 matrices A, B, C, D, E et nous devons échanger quelques lignes aléatoires entre la matrice A et toute autre matrice B sélectionnée au hasard parmi ces 5 matrices. Nous sélectionnons d’abord une matrice au hasard parmi 5 matrices, puis nous sélectionnons quelques lignes au hasard et échangeons des lignes entre ces matrices (matrice A et matrice sélectionnées au hasard). Le même processus est suivi pour toutes les matrices de l’ensemble.
Exemple: opération d’échange de flèche entre la matrice A et la matrice sélectionnée au hasard
puis entre la matrice B et la matrice sélectionnée au hasard
puis entre la matrice C et la matrice sélectionnée au hasard
puis entre la matrice D et la matrice sélectionnée au hasard
puis entre la matrice E et la matrice sélectionnée au hasard
Une nouvelle matrice aléatoire est choisie pour chaque opération d’échange de lignes.
Par exemple, nous avons la matrice A
 
A = [0 0 0 1 0 0 0
0 0 1 0 0 0 0
0 0 0 0 0 1 0
0 1 0 0 0 0 0
0 0 0 0 0 0 1]
And we randomly choose matrix D (say)
D = [0 1 0 0 0 0 0
1 0 0 0 0 0 0
0 0 0 1 0 0 0
0 0 0 0 1 0 0
0 0 1 0 0 0 0]
Then we select a few rows randomly (say 2 and 4) and exchange.
The resulting matrices are
A = [0 0 0 1 0 0 0
1 0 0 0 0 0 0
0 0 0 0 0 1 0
0 0 0 0 1 0 0
0 0 0 0 0 0 1]
D = [0 1 0 0 0 0 0
0 0 1 0 0 0 0
0 0 0 1 0 0 0
0 1 0 0 0 0 0
0 0 1 0 0 0 0]
 
De même, nous effectuons une opération d’échange de lignes pour toutes les matrices de l’ensemble.

Meilleure réponse

  •  

    A = rand(5,7,5) ; % your A,B,C,D and E matrices in 3D
    A0 = A ;
    [m,n,p] = size(A) ;
    for i = 1:p
    idx = randperm(p,2) ; % selecte two rows randomly
    matrices = randperm(p,1) ; % select one matrix randomly
    A(idx,:,matrices) = A(idx,:,i) ; % replace random rows in selected matrix
    end