Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 14-06-2011 20:46:12

stormin
Membre
Inscription : 03-12-2009
Messages : 124

Vérifier continuellement une condition

Bonsoir,

Le principe de mon programme est de travailler avec la matrice dont sa somme est supérieure et  de vérifier après chaque mise de zéro dans Matrice1 ou bien Matrice2,si la condition est encore présente,sinon je passe à l'autre Matrice.

Le problème est que dans l’exécution, il reste figé sur somme1=0.
Pourquoi et comment je sors de la boucle?


epse=0.0075 ;
epsilon=0.01;
contpos=0;
contneg=0;
MASQUE1=ones(256,256);
MASQUE2=ones(256,256);

Matrice1=abs(TF4).*cos(angle(TF4) - angle(TF1))-epse*abs(TF1);
Matrice2=abs(TF5).*cos(angle(TF5) - angle(TF1))-epse*abs(TF1);

somme1 = sum(Matrice1(:));
somme2 = sum(Matrice2(:));

while abs(somme2-somme1)>epsilon  
   
   while   somme1>somme2
   

      if(somme1>0)

        [maximum1 indice1] = max(Matrice1(:));
        Matrice1(indice1) = 0;
        MASQUE1(indice1) = 0;
        contpos=contpos+1;

      end
     

     if(somme1<0)

        [minimum1 indice1] = min(Matrice1(:));
        Matrice1(indice1) = 0;
        MASQUE1(indice1) = 0;
        contneg=contneg+1;


     end
     
       somme1 = sum(Matrice1(:))
   end  

while somme1<somme2
   

    if(somme2>0)

        [maximum2 indice2] = max(Matrice2(:));
        Matrice2(indice2) = 0;
        MASQUE2(indice2) = 0;
        contpos=contpos+1;

    end
 
 
   if(somme2<0)

        [minimum2 indice2] = min(Matrice2(:));
        Matrice2(indice2) = 0;
        MASQUE2(indice2) = 0;
        contneg=contneg+1;

   end
    somme2 = sum(Matrice2(:))
end

end

Merci

Hors ligne

#2 15-06-2011 10:04:41

dartagnan
Invité

Re : Vérifier continuellement une condition

Bonjour,

Quel est le langage de programmation ?

Lorsque ça bloque sur somme1=0, quelle est la valeur de somme2 ?

Cordialement

#3 15-06-2011 10:06:48

dartagnan
Invité

Re : Vérifier continuellement une condition

edit : As-tu essayé de mettre une inégalité large et une inégalité stricte au lieu de 2 inégalités strictes ?

#4 15-06-2011 10:25:34

stormin
Membre
Inscription : 03-12-2009
Messages : 124

Re : Vérifier continuellement une condition

Re,

Quel est le langage de programmation ?

Matlab


Lorsque ça bloque sur somme1=0, quelle est la valeur de somme2 ?

J'ai pas la possibilité de savoir puisque le programme se bloque.

As-tu essayé de mettre une inégalité large et une inégalité stricte au lieu de 2 inégalités strictes ?

Je suis obligé suivant l'objectif de mon travail d'utiliser des inégalités strictes.

Hors ligne

#5 15-06-2011 12:05:09

dartagnan
Invité

Re : Vérifier continuellement une condition

Quel est l'objectif de ton travail ?

Quelque chose comme ça peut-être :

if(somme1==0)
break;
end

#6 15-06-2011 12:34:34

stormin
Membre
Inscription : 03-12-2009
Messages : 124

Re : Vérifier continuellement une condition

Quel est l'objectif de ton travail ?

L'objectif de mon programme est de construire un masque binaire et cela à travers des mises de zéros si et seulement si somme1(2) est strictement supérieure ou inférieure à zéro.

Quelque chose comme ça peut-être :
if(somme1==0)
break;
end

Oui,j'ai déjà essayé cette solution,je me trouve toujours devant le même problème.

    somme2 = sum(Matrice2(:))
end
if(somme1==0),break,end
end

Dernière modification par stormin (15-06-2011 12:35:10)

Hors ligne

#7 16-06-2011 10:49:26

dartagnan
Invité

Re : Vérifier continuellement une condition

Où est-ce que tu insère le break ? Est-ce que ceci fonctionne ?

epse=0.0075 ;
epsilon=0.01;
contpos=0;
contneg=0;
MASQUE1=ones(256,256);
MASQUE2=ones(256,256);

Matrice1=abs(TF4).*cos(angle(TF4) - angle(TF1))-epse*abs(TF1);
Matrice2=abs(TF5).*cos(angle(TF5) - angle(TF1))-epse*abs(TF1);

somme1 = sum(Matrice1(:));
somme2 = sum(Matrice2(:));

while abs(somme2-somme1)>epsilon  
   
   while   abs(somme1)>abs(somme2)
   

      if(somme1>0)

        [maximum1 indice1] = max(Matrice1(:));
        Matrice1(indice1) = 0;
        MASQUE1(indice1) = 0;
        contpos=contpos+1;

      end%if
     

     if(somme1<0)

        [minimum1 indice1] = min(Matrice1(:));
        Matrice1(indice1) = 0;
        MASQUE1(indice1) = 0;
        contneg=contneg+1;

     end%if
     
     if(somme1==0)

        break;

     end%if

     somme1 = sum(Matrice1(:))

   end%while1

   while abs(somme1)<abs(somme2)
   
      if(somme2>0)

        [maximum2 indice2] = max(Matrice2(:));
        Matrice2(indice2) = 0;
        MASQUE2(indice2) = 0;
        contpos=contpos+1;

      end%if
 
 
      if(somme2<0)

        [minimum2 indice2] = min(Matrice2(:));
        Matrice2(indice2) = 0;
        MASQUE2(indice2) = 0;
        contneg=contneg+1;

      end%if

     if(somme2==0)

        break;

     end%if

      somme2 = sum(Matrice2(:))

   end%while2
end%while_glob

end

#8 16-06-2011 13:22:02

stormin
Membre
Inscription : 03-12-2009
Messages : 124

Re : Vérifier continuellement une condition

Re,
Merci pour la réponse,maintenant il fonctionne correctement,et je pouvais sortir de la boucle,mais juste après la boucle,il faut que je calcule une capacité de discrimination:

MASQUE=MASQUE1.*MASQUE2;

    Q=fftshift(ifft2(CC.*MASQUE));
    G=abs(Q).^2;

    cont=contpos+contneg


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

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

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

    [M11 idx1] = max(G1(:));
    [M12 idx2] = max(G2(:));
    [M13 idx3] = max(G3(:));

    DC1=M12/M11
    DC2=M13/M11

En variant epse de 0 à 1,je dois trouver par exemple pour epse=1,une des deux DC qui est égale à 1,mais avec ce programme,j'ai trouvé 0.2.

Je pense que ce problème est du à l'utilisation de abs(somme1)<abs(somme2) au lieu de somme1<somme2,et avec cette dernière condition sans abs,je reviens au problème de somme1=0.

Merci

Hors ligne

#9 29-06-2011 17:53:11

stormin
Membre
Inscription : 03-12-2009
Messages : 124

Re : Vérifier continuellement une condition

Bonsoir,

Yoshi,j'ai besoin de votre aide à trouver un livre (de Jean-Louis Tribillon dont le titre est:Traitement optique de l'information et reconnaissance des formes par voie optique) sous format pdf ou word ,pour bien comprendre mes programmes.

Merci

Hors ligne

Réponse rapide

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
soixante et onze plus quatre-vingt neuf
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Pied de page des forums