Aller au contenu

[MATLAB] Matlab:test répétitif dans while


Messages recommandés

Bonsoir,

J'aimerais savoir comment si le max ou bien le min change,j'applique pas cette ligne et que j'initialise MASQUE et conserver le dernier MASQUE

Matrice=Matrice.*MASQUE;

epse=0.0075;
epsilon = 0.005;
MASQUE=ones(256,256);

somme = sum(MASQUE(:));

while(abs(somme)>epsilon)



A_Auto_Cor1=fftshift(ifft2(A_Auto_Cor1.*MASQUE));
G1=abs(A_Auto_Cor1).^2;

A_Auto_Cor2=fftshift(ifft2(A_Auto_Cor2.*MASQUE));
G2=abs(A_Auto_Cor2).^2;

A_Auto_Cor3=fftshift(ifft2(A_Auto_Cor3.*MASQUE));
G3=abs(A_Auto_Cor3).^2;


X_XCor1=fftshift(ifft2(X_XCor1.*MASQUE));
G4=abs(X_XCor1).^2;

X_XCor2=fftshift(ifft2(X_XCor2.*MASQUE));
G5=abs(X_XCor2).^2;

X_XCor3=fftshift(ifft2(X_XCor3.*MASQUE));
G6=abs(X_XCor3).^2;



[A1 ID1] = max(G1(:));
[A2 ID2] = max(G2(:));
[A3 ID3] = max(G3(:));

[M1 id1] = max(G4(:));
[M2 id2] = max(G5(:));
[M3 id3] = max(G6(:));

M123=[M1 M2 M3];
A123=[A1 A2 A3];

MAXC=max(M123)
MINA=min(A123)

if     MAXC==M1
   trans_four_C=TF7;
  elseif MAXC==M2
   trans_four_C=TF8;
  else
   trans_four_C=TF9;
end    

if     MINA==A1
   trans_four_A=TF1;
  elseif MINA==A2
   trans_four_A=TF2;
  else
   trans_four_A=TF3;
end 

%% DC

Matrice=abs(trans_four_C).*cos(angle(trans_four_C) - angle(trans_four_A))-epse*abs(trans_four_A); 
Matrice=Matrice.*MASQUE;


somme = sum(Matrice(:));

   if (abs(somme)<epsilon),break,end       

          if somme>0
          [maximum indice] = max(Matrice(:));
          Matrice(indice) = 0;
          MASQUE(indice) = 0;


          else
          [minimum indice] = min(Matrice(:));
          Matrice(indice) = 0;
          MASQUE(indice) = 0;



          end
   somme = sum(Matrice(:));
end

Merci

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...