From Fabrice.AUZANNEAU at cea.fr Sat Nov 21 10:41:09 2015 From: Fabrice.AUZANNEAU at cea.fr (AUZANNEAU Fabrice) Date: Sat, 21 Nov 2015 09:41:09 +0000 Subject: [Users-fr] =?iso-8859-1?q?TR=3A_Probl=E8me_bizarre?= Message-ID: <39E6377A1FCCBC46BC9457F416E580DA2FBC7016@EXDAG0-A3.intra.cea.fr> Bonjour J'ai un problème étrange avec Scilab, et je me casse les quelques neurones qui me restent à essayer de le comprendre. Mon programme génère un signal et le filtre. Il le fait en boucle pour tester plusieurs valeurs du signal. Pour filtrer, je génère un gabarit de filtre et je passe dans le domaine fréquentiel par fft puis ifft. Rien de bien sorcier... Le programme fait les étapes suivantes : - Calcul du gabarit du filtre - Boucle for o Calcul du signal initial o Autocorrélation du signal initial o Filtrage o Autocorrélation du signal filtré - Fin boucle Normalement, avec les paramètres que j'ai, le maximum d'autocorrélation du signal initial est une valeur proche de 140. C'est mon critère pour constater que les résultats sont bons. Le problème est le suivant : 2 cas 1 : si je calcule le gabarit. Dans ma boucle, le second calcul d'autocorrélation (ligne 61) fait que la génération du signal initial à l'étape suivante est fausse (son autocorrélation devient bien plus élevée que 140), mais ce signal est généré par une fonction sans rapport avec le filtrage et les autres calculs. Si je ne calcule pas l'autocorrélation du second signal (ligne 61 commentée), tout est bon... 2 : si je laisse le gabarit à 1 (ligne 48 commentée), tout est bon aussi. Les différentes versions du signal initial sont bonnes, que je calcule ou non l'autocorrélation du signal filtré. En bref, il y a une interaction entre les lignes 48 et 61 que je n'arrive pas à trouver, et qui provoque un calcul faux de ma fonction générant le signal (Gene), placée en début de programme... J'ai aussi remarqué que si je lance le programme avec les options qui donnent des résultats faux, puis que je commente les lignes qui posent problème et que je le relance, la première version du calcul (premier pas de la boucle) est fausse puis les autres sont correctes. Ceci malgré le clear en début de programme. Je m'interroge sur la fonction clear, dont je pensais qu'elle effaçait les variables. Ca ne doit pas être aussi simple puisque le programme conserve un souvenir de l'exécution précédente. Pour info : j'utilise Scilab 5.5.2 sous Windows 7. Merci de votre aide... Fabrice Auzanneau -------------- section suivante -------------- Une pièce jointe HTML a été nettoyée... URL: -------------- section suivante -------------- Une pièce jointe autre que texte a été nettoyée... Nom: Test.sce Type: application/octet-stream Taille: 1643 octets Desc: Test.sce URL: