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 :

Comparaison de deux signaux


Sujet :

Signal

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 25
    Points : 9
    Points
    9
    Par défaut Comparaison de deux signaux
    Bonsoir,

    je veux comparer un signal audio avec le seuil d'audition. J'ai commencé par faire la FFT de mon signal. Ce signal est donc défini pour des composantes spectrales bien définies . C'est le cas aussi du seuil d'audition. Lors de la comparaison des deux, il y a un problème c"est que les deux ne sont pas tracés pour les mêmes fréquences donc j"arrive pas à les comparer... Comment je peux procéder ???
    Merci

  2. #2
    Membre éprouvé
    Avatar de rostomus
    Homme Profil pro
    Doctorant électronique et traitement du signal
    Inscrit en
    Décembre 2006
    Messages
    791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant électronique et traitement du signal

    Informations forums :
    Inscription : Décembre 2006
    Messages : 791
    Points : 1 205
    Points
    1 205
    Par défaut
    Peut-être en faisant une interpolation!! regarde la fonction interp1 de MATLAB.
    MATLAB 7.4 (R2007a) WIN XP SP2
    -------------------------------------

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    Merci pour la commande . Mais j'ai pas pu comprendre son fonctionnement ... et est-ce que cette commande permet à partir de quelques valeurs, donner toutes les autres valeurs ??



    Merci

  4. #4
    Membre éprouvé
    Avatar de rostomus
    Homme Profil pro
    Doctorant électronique et traitement du signal
    Inscrit en
    Décembre 2006
    Messages
    791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant électronique et traitement du signal

    Informations forums :
    Inscription : Décembre 2006
    Messages : 791
    Points : 1 205
    Points
    1 205
    Par défaut
    ça veut dire si Y=f(x) ==> yi=f(xi).
    MATLAB 7.4 (R2007a) WIN XP SP2
    -------------------------------------

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    J'ai fait ça mais j'ai eu un message d'erreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ??? Error using ==> interp1 at 261
    The values of X should be distinct.
    En fait j'ai f qui est définie pour les valeurs freq1=[0.125 0.25 0.5 1 1.5 2 3 4 6 8]; et je vaux que f soit définie sur l'intervalle freq qui comporte 512 valeurs... j'ai introduit le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    [freq]=seuil(freq);
    freq1=[0.125 0.25 0.5 1 1.5 2 3 4 6 8];
    [p,f]=perte('homme',60);
    q=interp1(f,freq1,freq);
    sachant que seuil et perte sont des fonctions

  6. #6
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    aparament j'ai fait une faute, il faut que j'écrive:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    q=interp1(freq1,f,freq2,'linear');
    Mais quand je vois q ça donne :
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
      Columns 1 through 12
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 13 through 24
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 25 through 36
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 37 through 48
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 49 through 60
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 61 through 72
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 73 through 84
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 85 through 96
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 97 through 108
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 109 through 120
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 121 through 132
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 133 through 144
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 145 through 156
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 157 through 168
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 169 through 180
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 181 through 192
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 193 through 204
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 205 through 216
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 217 through 228
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 229 through 240
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 241 through 252
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 253 through 264
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 265 through 276
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 277 through 288
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 289 through 300
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 301 through 312
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 313 through 324
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 325 through 336
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 337 through 348
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 349 through 360
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 361 through 372
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 373 through 384
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 385 through 396
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 397 through 408
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 409 through 420
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 421 through 432
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 433 through 444
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 445 through 456
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 457 through 468
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 469 through 480
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 481 through 492
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 493 through 504
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
     
      Columns 505 through 512
     
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN

  7. #7
    Membre éprouvé
    Avatar de rostomus
    Homme Profil pro
    Doctorant électronique et traitement du signal
    Inscrit en
    Décembre 2006
    Messages
    791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant électronique et traitement du signal

    Informations forums :
    Inscription : Décembre 2006
    Messages : 791
    Points : 1 205
    Points
    1 205
    Par défaut
    Tu peux montrer ce que valent freq1 et f? (je comprend qu'ils contiennent seulement 10 valeurs) et aussi comment tu obtiens freq2?
    MATLAB 7.4 (R2007a) WIN XP SP2
    -------------------------------------

  8. #8
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    freq1=[0.125 0.25 0.5 1 1.5 2 3 4 6 8];

    f=[5.2920 5.2920 6.1740 7.0560 9.7020 12.3480 20.2860 28.2240 31.7520 38.8080];

    en fait je veux que f ait des valeurs pour freq2
    avec freq2 est obtenue comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fe=16000;
    N=512;
    freq2=(0:N-1).*(fe/(2*N));

  9. #9
    Membre éprouvé
    Avatar de rostomus
    Homme Profil pro
    Doctorant électronique et traitement du signal
    Inscrit en
    Décembre 2006
    Messages
    791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant électronique et traitement du signal

    Informations forums :
    Inscription : Décembre 2006
    Messages : 791
    Points : 1 205
    Points
    1 205
    Par défaut
    Est ce que f et freq1 sont obtenue avec une fréquence d'échantillonnage fe=16000. Le problème est que freq2 s'étale environ jusqu'à 16. c'est à dire le double de freq1, du coup c'est normal qu'on aura une mauvaise interpolation (voir impossible).
    MATLAB 7.4 (R2007a) WIN XP SP2
    -------------------------------------

  10. #10
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    freq1 sont prédefinies freq1=[125 250 500 1000 1500 2000 3000 4000 6000 8000] en hz; f a été calculé avec les valeurs de freq1 donc f est fonction de freq1 ... et moi je veux la définir tout le long de freq2 et freq2 a 512 valeurs... donc je veux avoir les valeurs de f pour tous les freq2

  11. #11
    Membre éprouvé
    Avatar de rostomus
    Homme Profil pro
    Doctorant électronique et traitement du signal
    Inscrit en
    Décembre 2006
    Messages
    791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant électronique et traitement du signal

    Informations forums :
    Inscription : Décembre 2006
    Messages : 791
    Points : 1 205
    Points
    1 205
    Par défaut
    Je te propose de compléter les deux vecteurs freq1 et f comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    freq1=[freq1 9000:1000:16000];
    f=[f zeros(1,8)];
    puis, fais l'interpolation.
    MATLAB 7.4 (R2007a) WIN XP SP2
    -------------------------------------

  12. #12
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    Merci beaucoup beaucoup, ça bien marché !
    J'ai un autre problème, si ça ne vous dérange pas, en fait j'ai tracé un seuil d'audition et je veux comparer ce seuil avec un signal que j'ai convertit dans le domaine fréquentiel (trame par trame) que voici le code
    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
     
    [sn,fe,nbit]=wavread('C:\Users\sofiene\Desktop\R09_REStAURANT');
    L = 512;  
    p=0.000980;
    sn=sn(:,1); 
    l=length(sn); % c'est la longueur du signal sn
    Nbre_tra = fix(l/L); % à l'aide de la commande "fix" on calcule le nombre de trames du signal
    n=(0:l-1)/fe; % on définit l'axe des temps
    figure(1); plot(n,sn);  title('Allure temporelle du signal enregistré'); xlabel('temps (s)'); ylabel('amplitude du signal'); % on trace le signal sn
     
    % la boucle suivante sert à calculer la DSP de chaque trame du signal,
    % faire le passage en décibel et visualiser leurs courbes. 
    freq = (0:L-1)*fe/L;
    for i=2:Nbre_tra % on introduit une boucle qui permet de parcourir tout le signal et ce trame par trame 
     
        t = sn( (i-1)*L+1-(L/4) :i*L -(L/4));% on parcourt le signal trame par trame
     
        S = fftshift(fft(t,L)); % on calcule la transformée de Fourier de chaque trame indépendament
     
        S_d=(abs(S)).^2; %on calcule la densité spectrale de puissance de chaque trame  
     
        S_db = 10*log10(S_d/p); % on passe au décibel
     
        %figure(2),plot(S_d) % on trace la courbe de la densité spectrale de puissance de chaque trame indépendament
     
        figure(2),plot(freq, S_db); title(' DSP du signal enregistré'); xlabel('Hz'); ylabel('amplitude du signal') 
        % pour chaque trame, on trace le signal découpé en trames en décibel
     
        pause
    end
    mais j'ai le même problème ; il faut que je compare ce signal avec le seuil que j'ai tracé trame par trame ; mais le seuil et le signal ne sont pas définis par les memes valeurs

  13. #13
    Membre éprouvé
    Avatar de rostomus
    Homme Profil pro
    Doctorant électronique et traitement du signal
    Inscrit en
    Décembre 2006
    Messages
    791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant électronique et traitement du signal

    Informations forums :
    Inscription : Décembre 2006
    Messages : 791
    Points : 1 205
    Points
    1 205
    Par défaut
    Je ne vois pas ou est le problème! tu refais exactement la même chose pour chaque S (dans la boucle), non?
    MATLAB 7.4 (R2007a) WIN XP SP2
    -------------------------------------

  14. #14
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 25
    Points : 9
    Points
    9
    Par défaut
    J'ai essayé de le faire mais j'ai eu le meme problème !!! Voici ce que j'ai programmé
    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
    fclose('all');
    [sn,fe,nbit]=wavread('C:\Users\sofiene\Desktop\restau');
    L = 512; 
    p=0.0009801;
    sn=sn(:,1); 
    l=length(sn);
    Nbre_tra = fix(l/L);
    n=(0:l-1)/fe; 
    freq = (0:L-1)*fe/L;
    for i=2:Nbre_tra
        t = sn( (i-1)*L+1-(L/4) :i*L -(L/4));
        S = fftshift(fft(t,L)); 
        S_d=(abs(S)).^2; 
        S_db = 10*log10(S_d/p); 
        figure(2),plot(freq, S_db); title('DSP du signal enregistré'); xlabel('Hz'); ylabel('amplitude du signal') 
     
        freq1=[125 250 500 1000 1500 2000 3000 4000 6000 8000];
        freq1=[freq1 9000:1000:16000];
        h=seuil(freq);
        [p,f]=perte('homme',60);
        f=[f zeros(1,8)];
        q=interp1(freq1,f,freq2,'linear');
        t=q+h;
     
     
        v=interp1(freq2,t,freq,'linear');
     
        if  (S_db') < v
            m = 0 ;
        else m = v;
     
        end 
     
        figure(3),plot(freq,m);
     
        pause
        end
    en fait je veux comparer le t avec le S_db mais ils ne sont pas definis de la meme facon donc j'ai convertit le t en v mais ca n'a pas marché !!

Discussions similaires

  1. [Débutant] comparaison entre deux signaux
    Par frejus dans le forum Signal
    Réponses: 0
    Dernier message: 25/02/2015, 11h50
  2. Comparaison de deux signaux
    Par pamath dans le forum Signal
    Réponses: 1
    Dernier message: 26/05/2010, 14h55
  3. PL/SQL COMPARAISON DE DEUX TABLEAUX APRES BULK
    Par mimi_été dans le forum PL/SQL
    Réponses: 5
    Dernier message: 30/06/2009, 12h14
  4. [SYBASE] Comparaison de deux datetime
    Par paf15 dans le forum Sybase
    Réponses: 1
    Dernier message: 17/04/2005, 16h51
  5. Réponses: 5
    Dernier message: 06/10/2003, 17h49

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