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

Signal Discussion :

Intercorrélation de deux signaux


Sujet :

Signal

  1. #21
    Membre émérite
    Homme Profil pro
    Inscrit en
    mai 2008
    Messages
    1 994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 1 994
    Points : 2 763
    Points
    2 763
    Par défaut
    Bonjour,

    Affichage symétrique :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    clear
    Te=1/12000;
    f1=440;
    f2=440;
    phi2=2*pi*rand(1);
    t=0:Te:0.02;
    A1=randi([1,10]);
    A2=randi([1,10]);
    x1=A1*cos(2*pi*f1*t);
    x2=A2*cos(2*pi*f2*t+phi2);
    % Normalisation
    x1=A1*cos(2*pi*f1*t)/max(x1);
    x2=A2*cos(2*pi*f2*t+phi2)/max(x2);
    N = length(x1);
    % Test du maximum
    for k = 1: N-1
        for n = 1 : N-k-1
            inter(n) = x1(n)*x1(n+k);
        end
        Cxx(k) = 1/N*sum(inter);
    end
    % Maximum de référence
    MaxCxx=max(Cxx);
    m=0;
    for k=0:100
        p=0;
        for t = 0:Te: 0.02
            p=p+1;
            inter(p)=A1*cos(2*pi*f1*t)*A2*cos(2*pi*f2*(t-k*Te)+phi2);
        end
        m=m+1;
        Cxx(p) = 1/p*sum(inter(1:end-3));
    end
    % Test des maxima - Seuil à ajuster
    if MaxCxx - max(Cxx) > 0.1
        disp('signaux DIFFERENTS')
    else
        disp('signaux PROCHES')
    end
    t=0:Te:0.02;
    figure(1)
    plot(t,x1,t,x2)
    grid
    k=1:10;
    t = 0:Te: 0.02;
    figure(2)
    plot(-t,Cxx,t,Cxx,'b') ;
    grid
    axis([-t(end) t(end) min(Cxx(1:end-1)) max(Cxx(1:end-1))])

  2. #22
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    novembre 2020
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2020
    Messages : 23
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup ! Mais décidément, cet exercice me pose beaucoup de problèmes... En effet, je pense que quelque chose cloche dans la méthodologie, puisque quand je met f1 = 500 et f2 = 1300, ca renvoie que le fréquences sont proches. Aussi, pourquoi avoir normalisé les signaux en les divisant par leur amplitude ? L'amplitude influe beaucoup sur l'intercorrélation? Vous avez aussi fait deux calculs : Le premier me parait être l'autocorrélation de x1 mai spourquoi l'avoir calculée ? Et le deuxieme calcul je ne comprend pas le but.

  3. #23
    Membre émérite
    Homme Profil pro
    Inscrit en
    mai 2008
    Messages
    1 994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 1 994
    Points : 2 763
    Points
    2 763
    Par défaut
    Bonsoir,

    Je n'ai pas ce problème, ni avec le test sur les périodes.
    Normaliser les signaux est plus commode de travailler entre 0 et 1.

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    clear
    Te=1/12000;
    A=1;f1=500;f2=1300;
    phi2=2*pi*rand(1);
    t=0:Te:0.02;
    A1=randi([1,10]);
    A2=randi([1,10]);
    x1=A1*cos(2*pi*f1*t);
    x2=A2*cos(2*pi*f2*t+phi2);
    % Normalisation
    x1=A1*cos(2*pi*f1*t)/max(x1);
    x2=A2*cos(2*pi*f2*t+phi2)/max(x2);
    N = length(x1);
    % Test du maximum
    for k = 1: N-1
        for n = 1 : N-k-1
            inter(n) = x1(n)*x1(n+k);
        end
        Cxx(k) = 1/N*sum(inter);
    end
    % Maximum de référence
    MaxCxx=max(Cxx);
    for k = 1: N-1
        for n = 1 : N-k-1
            inter(n) = x1(n)*x2(n+k);
        end
        Cxx(k) = 1/N*sum(inter(1:end-3));
    end
    % Test des maxima - Seuil à ajuster
    if MaxCxx - max(Cxx) > 0.1
        disp('signaux dfifférents')
    else
        disp('signaux prochent')
    end
     
    figure(1)
    plot(t,x1,t,x2)
    grid
    figure(2)
    plot((1:N-1),Cxx) ;
    grid

  4. #24
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    novembre 2020
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2020
    Messages : 23
    Points : 5
    Points
    5
    Par défaut
    Pour générer les signaux, j'ai ce code, est ce que les résultats seront différents ?
    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
    Fe = 16000;
    Te = 1/Fe;
     
    % Premier signal
    % f1 = randi([130,4000]);
    f1 = 800 ;
    T1 = 1/f1;
    phi1 = 0 ;
    A1 = randi([1,10]);
     
    Nb_Ech = 500;
    alpha = (Nb_Ech*f1)/Fe ;
    D = alpha /f1 ;
    t = 0:Te:D;
    x1 = A1*cos(2*pi*f1*t);
     
    % Deuxième signal
    % f2 = randi([130,4000]);
    f2 = 810 ;
    T2 = 1/f2;
    phi2 = 2*pi*rand(1);
    A2 = randi([1,10]);
    x2 = A2*cos(2*pi*f2*t + phi2);
    Etant donné que ce code marche, pouvez vous juste m'expliquer votre démarche parce que ne comprend pas trop...

  5. #25
    Membre émérite
    Homme Profil pro
    Inscrit en
    mai 2008
    Messages
    1 994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 1 994
    Points : 2 763
    Points
    2 763
    Par défaut
    Bonsoir,
    Ton dernier code fonctionne très bien.
    Mon second algorithme compare les amplitudes comme tu l'avais voulu.

  6. #26
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    novembre 2020
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2020
    Messages : 23
    Points : 5
    Points
    5
    Par défaut
    Il compare entre quoi et quoi ?
    Il fonctionne très bien en général, mais des fois il va afficher que les fréquences sont les memes ou différentes alors que je n'ai modifié que le phi ? est ce que c'est une limite de l'algorithme ou on peut le modifier ?
    (Par exemple quand f1 = 320 et f2 = 309, ca affiche différents pour phi>1 et proches pour phi<=1)

  7. #27
    Membre émérite
    Homme Profil pro
    Inscrit en
    mai 2008
    Messages
    1 994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 1 994
    Points : 2 763
    Points
    2 763
    Par défaut
    Bonjour,

    Pour durcir l'algorithme il fau ajuster le seuil de détection :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if MaxCxx - max(Cxx) > 0.3
    Dans ces cas là (plusieurs paramètres) on peut faire un apprentissage :
    - mettre le limites des paramètres dans un tableau (f1,f2, phi2,A1,A2)
    - tirer au hasard les 5 paramètres
    - faire tourner l’algorithme
    - noter (journal de bord) si les fréquences sont proches ou non
    - incrémenter le seuil par petit pas
    - recommencer (par une boucle) un très grand nombre de fois ou jusqu’au moment où il n’y a plus d’erreur

  8. #28
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    novembre 2020
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2020
    Messages : 23
    Points : 5
    Points
    5
    Par défaut
    D'accord merci, donc si j'ai bien compris, on normalise les signaux, ensuite on calcule l'autocorrélation de x1 pour avoir un maximum de référence, et on compare ce maximum avec le maximum de l'intercorrélation calculée juste après??
    Juste, pourquoi quand vous avez calculé l'intercorrélation, vous avez seulement fait la somme de 1 à end - 3 ?

  9. #29
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    novembre 2020
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2020
    Messages : 23
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par phryte Voir le message
    Dans ces cas là (plusieurs paramètres) on peut faire un apprentissage :
    - mettre le limites des paramètres dans un tableau (f1,f2, phi2,A1,A2)
    - tirer au hasard les 5 paramètres
    - faire tourner l’algorithme
    - noter (journal de bord) si les fréquences sont proches ou non
    - incrémenter le seuil par petit pas
    - recommencer (par une boucle) un très grand nombre de fois ou jusqu’au moment où il n’y a plus d’erreur
    Ouaw ca serait super ! Comment faire ?

  10. #30
    Membre émérite
    Homme Profil pro
    Inscrit en
    mai 2008
    Messages
    1 994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 1 994
    Points : 2 763
    Points
    2 763
    Par défaut
    Bonjour,

    Comme ceci (c’est la méthode de Monte-Carlo) :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    clear
    f1r=[10 1000];
    f2r=[10 1000];
    phir=[0 2*pi];
    A1r=[0.1 100];
    A2r=[0.1 100];
    seuil=0.1;
    N=100% Nombre d'essais
    Journal=zeros(N,8);
    Num_Essai=0;
    for n=1:N
        Num_Essai=Num_Essai+1;
        % tirage des parametres
        f1=f1r(1)+(f1r(2)-f1r(1))*rand;
        f2=f2r(1)+(f2r(2)-f2r(1))*rand;
        phi2=phir(1)+(phir(2)-phir(1))*rand;
        A1=
        A2=
        % Appel de l'algorithme (Le mettre en function)
        %
        %
        %
        %%%%%%%%%%%%%%%%%
        % Test
        if 'Signaux différents'
            % Metrre les valeurs dans le Journal
            % Incrémenter le seuil
            % 
        end
     
     
     
     
     
     
     
     
     
     
     
     
     
    end
     
    disp(Journal)
     
     
    % Exemple de Journal
     
     
    %  N° % Date % f1 % f2 % Phi2 % A1 % A2 % Seuil %
    %      %         %     %     %        %      %      %         %
    -------------------------

Discussions similaires

  1. Corrélation de deux signaux sons
    Par paissad dans le forum LabVIEW
    Réponses: 0
    Dernier message: 01/12/2008, 17h29
  2. Réponses: 2
    Dernier message: 10/07/2008, 12h26
  3. Multiplication de deux signaux
    Par Neocid dans le forum Signal
    Réponses: 10
    Dernier message: 03/03/2008, 12h52
  4. Réponses: 10
    Dernier message: 19/06/2007, 12h31
  5. Calcul intercorrélation entre 2 signaux
    Par jmhohen dans le forum Signal
    Réponses: 1
    Dernier message: 07/03/2007, 19h06

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