A=randn(4); %une matrice vraiment aleatoire
[m,n]=size(A);
mal=0;
sigma = perms(1:n) ;  %une liste de permutations des nombres de 1 à n
for ip = 1:size(sigma,1) %pour toute permutation
    P = eye(n); %commencer avec une matrice identite     
    P = P(sigma(ip,:),:);  %une facon courte de produire P
    
    %faites ce que vous voulez avec P:
    B=P*A;
    prodmineur = 1;  %commence avec 1
    for jp=1:min(m,n)
        %calculer la mineur et multiplier avec toutes les précédentes:
        prodmineur = prodmineur*det(B(1:jp,1:jp)); 
    end;
    if abs(prodmineur)< 1.0e-10 %notre impression de 0 avec arrondissement
            mal = mal+1;  %donc un des mineures etait nulle
    end;
end;
bon=factorial(n)-mal  %il y avait 24=4! matrices.
A
