IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Traitement du signal Discussion :

transformée ondelette et calcul de similarité


Sujet :

Traitement du signal

  1. #41
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par anibal Voir le message
    y a t il un moyen de calculer une crosscorrelation en tenant compte de la totalité des deux vecteurs ?
    Il y en a plusieurs, basés sur le meme principe: allonger le vecteur le plus court pour que les 2 vecteurs soient de meme taille.

    1ere methode: repeter les données du vecteur le plus court... facile, il suffit d'utiliser l'operateur modulo sur les deux series

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int end = Math.max(Y.length,X.length);
    for(int j=start;j<end;j++) {
    	int xindex = j % X.length;
    	double XValue = X[xindex];
    	
    	// le reste ne change pas... 
    	int yindex = (j-d)%Y.length;
    	...
    2eme methode: resampler le vecteur le plus court, par exemple en faisaint une interpolation lineaire ou par une convolution (noyau de Lanczos)
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  2. #42
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 137
    Points : 42
    Points
    42
    Par défaut
    et pour la convolution ?
    ça remplace la correlation croisée ?

  3. #43
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par anibal Voir le message
    et pour la convolution ?
    ça remplace la correlation croisée ?
    Non, c'est juste une methode pour "allonger" le vecteur. Une fois que les 2 vecteurs ont la meme taille, il faut appliquer les algos precedents de correlation croisée.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  4. #44
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 137
    Points : 42
    Points
    42
    Par défaut
    je vais essayer la premiere methode mais dans mon domaine on utilise souvent (selon des papiers que j'ai lu) la convolution mais je sais pas comment

    mais si on allonge le vecteur le plus court et qu'on s'apercoi que la cross correlation maximale arrive dans une position > à la taille initiale du vecteur, et qu'on veut connaitre la position sur le vecteur signal initial avant transformée ondelette , comment on peut le faire ?

  5. #45
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par anibal Voir le message
    mais si on allonge le vecteur le plus court et qu'on s'apercoi que la cross correlation maximale arrive dans une position > à la taille initiale du vecteur, et qu'on veut connaitre la position sur le vecteur signal initial avant transformée ondelette , comment on peut le faire ?
    si tu utilises la methode 1 (repetition du vecteur court), cela veut dire que tu considere que le vecteur court est un "motif". Et donc tu cherches a retrouver ce motif dans le vecteur "long" qui lui n'a pas été modifié.

    Donc seule la position dans le vecteur "long" a un sens physique. La position dans le motif répété n'a pas de sens physique.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  6. #46
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 137
    Points : 42
    Points
    42
    Par défaut
    apres implementation par moment j'ai des resultats auxquels je trouvais pas d'explication , je me suis alors aperçu en lisant un article de l'importance de la normalisation
    These numerical series are normalized to zero mean and unit standard deviation and zero-padded to have an identical sequence length.
    comment à partir de deux series numeriques de tailles differentes on arrive à obtenir deux vecteurs de meme taille ?
    zero mean ?
    unit standard deviation ?
    zero padded ?

    A quoi correspondent ces techniques ?

  7. #47
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par anibal Voir le message
    zero mean ?
    On calcule moyenne de la serie et on la retranche a tout les termes de la serie.

    C'est fait par défaut dans la formule de correlation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    numerateur += (XValue - Xmoy)*(YValue - Ymoy);
    Citation Envoyé par anibal Voir le message
    unit standard deviation ?
    on calcule la deviation standard de la série et on divise chaque terme par cette valeur.

    C'est fait egalement par défaut dans la formule de correlation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        denomX += pow((XValue-Xmoy),2);
        denomY += pow((YValue-Ymoy),2);
    }
    result = numerateur / sqrt(denomX*denomY);
    Citation Envoyé par anibal Voir le message
    zero padded ?
    Ca consite a mettre des zeros au debut ou a la fin d'une serie pour augmenter sa taille.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  8. #48
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 137
    Points : 42
    Points
    42
    Par défaut
    ghhhhhh
    coucou pseudocode c encore moi, je galere pour faire un truc et une aide serait vraiment le bienvenu : voila le prob, j'utilise une libraire de cwt, le probleme c'est que je peux pas comparer la crosscorrelation entre deux vecteur de tailles differentes et jpeux pas normaliser à la meme taille parceque ça fausse le resultat.

    j'ai pensé à une autre astuce : je voudrai balader les deux séries dans deux sens differents :

    X1 : ======================== --->
    x2 : <---- ==========================

    en glissant je fixe une taille bien determinée, fenetre qui correspond au croisement des deux series :

    x1 : ============|=========|=== --->
    x2 : <--- = |=========|==================
    f

    dans cette fenetre je calcule la crosscorrelation entre les deux segments des deux series en decalant de 1 dans chaque sens jusq'à la fin des deux séries.

    Comme ça je peux localiser où est le max de crosscorrelation

    l'idée et là le code ça suit pas j'ai pas su comment fixer une fenetre et faire glisser les deux series

    help

    ah l'illustration n'est pas bien je vais essayer avec les cotes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    etape 1
    X1 :  ============================ ---->
    X2 :                                                <----========================
     
     
    etape 2
     
    X1 : ================|========|== --->
    X2 :              <---- ====|========|=================
    l'illustration n'est pas geniale et reflete pas ce que je veux dire la fenetre correspond au croisement des deux series mais je sais pourquoi il me la met en decalé une fois posté !

    j'espere que le probleme est clair !

  9. #49
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par anibal Voir le message
    j'ai pensé à une autre astuce : je voudrai balader les deux séries dans deux sens differents... en glissant je fixe une taille bien determinée, fenetre qui correspond au croisement des deux series
    J'ai pas tout compris, mais est-ce que ca ne revient pas au meme d'extraire de chaque signal un sous-signal de la bonne taille ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    X1: xxxxxxxxxxx|111111111|xx --> subX1: 111111111
     
    X2: xx|222222222|xxxxxxxxxxx --> subX2: 222222222
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  10. #50
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 137
    Points : 42
    Points
    42
    Par défaut
    à peu près mais jvoudrai balader les deux vecteur en sens contraires chacun sur l'autre comme ça je suis sur d'avoir comparer toutes les fenetres possibles en seulement deux boucles

    j'ai codé un truc mais je me perd dans les indices :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
     
     for(i=l1;i>l1+RAD;i--){
     
     
    	for(j=0; j<l2-RAD; j++){
     
    	ind1 = i;
    	ind2 = j;
     
    		 for(t=0;t<RAD;t++){
     
    	  		window[t+RAD-1] = wt.cwt[0][ind1] ;
    			window2[t] = wt2.cwt[0][ind2];
    			ind1--;
    			ind2++;
     
    		 }
    		 for(jj=0;jj<RAD;jj++) corr = crosscorrelation2(window,window2,RAD,RAD,jj);
    		 printf("%f  ",corr);
     
    	}
     
    }
    ça m'imprime rien

    RAD = taille de la fenetre

  11. #51
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par anibal Voir le message
    ça m'imprime rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for(i=l1;i>l1+RAD;i--) { ...
    La condition de la premiere boucle n'est pas vraie au départ => tu ne rentres jamais dans ta boucle.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  12. #52
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 137
    Points : 42
    Points
    42
    Par défaut
    çad ?

    l1 correspond à la taille de x1

    si on va aller de l1 à 0+RAD c bien ça qu'il faut faire non ?

  13. #53
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par anibal Voir le message
    çad ?
    for(i=l1;i>l1+RAD;i--) { ...

    1. au départ: i=l1.
    2. on teste le critere: i>l1+RAD c-a-d l1>l1+RAD qui est (toujours) faux pour tou RAD positif ou nul => sortie de boucle.

    l1 correspond à la taille de x1
    si on va aller de l1 à 0+RAD c bien ça qu'il faut faire non ?
    ca ne serait pas plutot:

    for(i=l1-RAD-1;i>=0;i--) { ... }
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  14. #54
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 137
    Points : 42
    Points
    42
    Par défaut
    non jpense pas comme ça je ne prends pas la derniere fenetre de taille RAD

Discussions similaires

  1. Calcul de similarité
    Par gemini6621 dans le forum Frameworks
    Réponses: 1
    Dernier message: 05/09/2013, 12h39
  2. [XL-2003] Transformation de mon calcul en une fonction
    Par hobine dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/03/2011, 14h47
  3. Exploration tableau et calcul de similarité
    Par shelko dans le forum Langage
    Réponses: 1
    Dernier message: 11/08/2010, 21h56
  4. Réponses: 2
    Dernier message: 13/04/2010, 07h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo