Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 15-05-2011 15:40:02
- stormin
- Membre
- Inscription : 03-12-2009
- Messages : 124
Boucle while (Algorithme)
Bonjour,
Je sais bien que vous êtes pas spécialisé en Matlab,mais ma question est à propos de comment faire la boucle,j'aimerais avoir l'idée ou bien savoir pourquoi mon programme ne fonctionne pas.
Dans Matrice,je devrais travailler avec la transformée de Fourier du max et min,je me bloque sur le fait que comment après chaque fois que je mets un zéro,vérifie si le max et min restent encore max et min,sinon,je dois chercher le nouveau max et min pour utiliser la transformée de Fourier de nouveau max et min.
J'ai fait la tentative suivante:
epsilon = 0.01;
MASQUE=ones(256,256);
somme = sum(MASQUE(:));
while(abs(somme)>epsilon)
Auto_Cor1=Auto_Cor1.*MASQUE;
G1=abs(Auto_Cor1).^2;
Auto_Cor2=Auto_Cor2.*MASQUE;
G2=abs(Auto_Cor2).^2;
Auto_Cor3=Auto_Cor3.*MASQUE;
G3=abs(Auto_Cor3).^2;
XCor1=XCor1.*MASQUE;
G4=abs(XCor1).^2;
XCor2=XCor2.*MASQUE;
G5=abs(XCor2).^2;
XCor3=XCor3.*MASQUE;
G6=abs(XCor3).^2;
[A1 ID1] = max(Auto_Cor1(:));
[A2 ID2] = max(Auto_Cor2(:));
[A3 ID3] = max(Auto_Cor3(:));
[M1 id1] = max(XCor1(:));
[M2 id2] = max(XCor2(:));
[M3 id3] = max(XCor3(:));
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);
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
Le programme reste bloqué dans l'exécution, et lorsque je vérifie avec Debug l'indice du MASQUE, je trouve à chaque fois que ce dernier ne change pas.
Merci
Hors ligne
#2 15-05-2011 15:51:57
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 16 988
Re : Boucle while (Algorithme)
Re,
et si tu commençais par répondre ici :
http://www.bibmath.net/forums/viewtopic.php?id=4624
sinon, je ne vois pas pourquoi je me creuserais la cervelle pour quelqu'un qui ne réagit pas même quand il a obtenu une réponse...
Si ça ne marche pas, une piste est de lire les messages d'erreur et de les fournir.
Sinon, on réalise ce travail sur papier avec une petit matrice exemple et on exécute pas à pas les étapes lesquelles
est censé passer ton programme.
Puis dans ton programme, à chaque étape correspondante, tu poses un "mouchard", c'est à dire n'importe quoi qui te dira si ton programme passe bien par là, et si est le résultat attendu est le bon...
Tu comprends ?..
Et ça c'est valable dans n'importe quel langage de programmation.
T'es quand même du genre obstiné : je ne connais pas matlab, mais je t'ai donné le lien d'un forum où on parle spécifiquement de Matlab et où tu es sûr à 100 % d'avoir la bonne réponse et tu préfères poser la question ici...
En plus, il se trouve que je sais pas (ou plus ?) ce qu'est une "transformée de Fourier"
J'avoue que je ne comprends pas...
Et là tu vas répondre dans une semaine, en ouvrant une autre discussion sur un autre sujet ?
@+
Arx Tarpeia Capitoli proxima...
Hors ligne
#3 15-05-2011 16:33:33
- stormin
- Membre
- Inscription : 03-12-2009
- Messages : 124
Re : Boucle while (Algorithme)
Merci pour la réponse,
T'es quand même du genre obstiné : je ne connais pas matlab, mais je t'ai donné le lien d'un forum où on parle spécifiquement de Matlab et où tu es sûr à 100 % d'avoir la bonne réponse et tu préfères poser la question ici...
J'ai signalé dans mon message,que je sais bien que vous êtes pas spécialisé en Matlab?Pour le forum developpez,j'ai déjà poser la question,mais sans réponse,et si j'insiste a poster ma question dans ce forum, c'est pour deux raisons :
1-Je suis convaincu,de vos compétences.
2-Mon problème est algorithmique.(Je parle de la logique de boucle )
Sinon, on réalise ce travail sur papier avec une petit matrice exemple et on exécute pas à pas les étapes lesquelles
est censé passer ton programme.
Puis dans ton programme, à chaque étape correspondante, tu poses un "mouchard", c'est à dire n'importe quoi qui te dira si ton programme passe bien par là, et si est le résultat attendu est le bon....
Oui,j'ai compris ,et j'ai déja fait cela,je trouve que la variable :
MASQUE garde la même indice,c'est pour cette raison que l'exécution reste coincer.
Hors ligne
#4 16-05-2011 13:02:56
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 16 988
Re : Boucle while (Algorithme)
Re,
Pour t'aider efficacement, il faudrait déjà que je comprenne ce que fait chacune de ces lignes, por ce n'est pas le cas :
G1=abs(Auto_Cor1).^2;
Auto_Cor2=Auto_Cor2.*MASQUE;
G2=abs(Auto_Cor2).^2;
Auto_Cor3=Auto_Cor3.*MASQUE;
G3=abs(Auto_Cor3).^2;
XCor1=XCor1.*MASQUE;
G4=abs(XCor1).^2;
XCor2=XCor2.*MASQUE;
G5=abs(XCor2).^2;
XCor3=XCor3.*MASQUE;
G6=abs(XCor3).^2;
[A1 ID1] = max(Auto_Cor1(:));
[A2 ID2] = max(Auto_Cor2(:));
[A3 ID3] = max(Auto_Cor3(:));
[M1 id1] = max(XCor1(:));
[M2 id2] = max(XCor2(:));
[M3 id3] = max(XCor3(:));
M123=[M1 M2 M3];
A123=[A1 A2 A3];
MAXC=max(M123)
MINA=min(A123)
Va donc voir mon programme modifié ici : http://www.bibmath.net/forums/viewtopic.php?id=4624 et les explications qui vont avec...
@+
Arx Tarpeia Capitoli proxima...
Hors ligne
Pages : 1