TP2 Traitement Signal MatLAB

download TP2 Traitement Signal MatLAB

of 14

Transcript of TP2 Traitement Signal MatLAB

  • 7/28/2019 TP2 Traitement Signal MatLAB

    1/14

    Jeanniard Sbastien

    Lematre Guillaume

    TP n2 : Analyse et traitement de signal sous Matlab

    2.4 Production de signaux sous Matlab :

    2.4.1 Synthse dun signal sinusodal :

    2.4.1.1 Thorme de Shannon : Le programme permettant de gnr un signal sinusodal est le suivant :

    Ts=100 ; % Priode du sinus Duree= 200 ; % Dure d'observation signal 2 priodes dt= 1; % Pas ou priode d'chantillonnage temporel du signal N=Duree/dt; % Nombre total d'chantillons n=0:N; % "Vectorisation du temps" (chantillonnage) t=n*dt; % Dfinition du temps y=sin(2*pi*t/Ts); % Gnration du sinus

    Dans les manipulations qui suivent, nous allons uniquement modifier la valeur de la variable dt qui re

    prsente la priode dchantillonnage.

    Cas o dt = 1 :

    Figure 1 : Cas o dt = 1

    Dans ce cas nous pouvons constater que la frquence dchantillonnage est largement suffisante.

    Nous pouvons prciser que la frquence dchantillonnage vaut :

  • 7/28/2019 TP2 Traitement Signal MatLAB

    2/14

    1

    Cas o dt = 10 :

    Figure 2 : Cas o dt = 10

    Nous pouvons constater que la frquence dchantillonnage est toujours suffisante pour synthtiser

    un signal sinusodal.

    Nous pouvons prciser que la frquence dchantillonnage vaut :

    110

    0,1

    Cas o dt = 50 :

  • 7/28/2019 TP2 Traitement Signal MatLAB

    3/14

    Figure 3 : Cas o dt = 50

    Ce cas est un le cas de sous chantillonnage o la frquence dchantillonnage est trop faible.

    Nous pouvons prciser que la frquence dchantillonnage vaut :

    150

    0,02

    Nous pouvons recouper ces rsultats en introduisant le thorme de Shannon qui nous indique que

    la frquence dchantillonnage doit tre suprieure deux fois la frquence maximale du signal.

    Dans notre cas, la frquence du signal sinusodal est de :

    1

    100 0,01

    Do en thorie, nous devons avoir une frquence dchantillonnage tel que :

    2

    0,02

    Les rsultats prcdemment trouv exprimentalement suivent bien ce thorme.

    2.4.1.2 Ajout dun bruit Gaussien : Le programme pour ajouter un bruit Gaussien de variance = 0.3 :

    Ts=100 ; % Priode du sinus Duree= 200 ; % Dure d'observation signal 2 priodes dt= 1; % Pas ou priode d'chantillonnage temporel du signal N=Duree/dt; % Nombre total d'chantillons n=0:N; % "Vectorisation du temps" (chantillonnage) t=n*dt; % Dfinition du temps

  • 7/28/2019 TP2 Traitement Signal MatLAB

    4/14

    y=sin(2*pi*t/Ts); % Gnration du sinus B=0.3 ; % B cart type de la distribution gaussienne du bruit bruit=B* randn (1,N+1); % Note: variance=B^2; yb=y+bruit; % Signal bruit

    Nous

    obtenons

    le

    signal

    bruit

    suivant

    :

    Figure 4 : Signal sinusodal bruit par un bruit Gausssien d'cart type gal 0,3

    Le programme pour ajouter un bruit Gaussien de variance = 0.16 c'est dire une variance = 0.4

    Ts=100 ; % Priode du sinus Duree= 200 ; % Dure d'observation signal 2 priodes dt= 1; % Pas ou priode d'chantillonnage temporel du signal N=Duree/dt; % Nombre total d'chantillons n=0:N; % "Vectorisation du temps" (chantillonnage) t=n*dt; % Dfinition du temps y=sin(2*pi*t/Ts); % Gnration du sinus B=0.4 ; % B cart type de la distribution gaussienne du bruit bruit=B* randn (1,N+1); % Note: variance=B^2; yb=y+bruit; % Signal bruit

    Nous obtenons le signal bruit suivant :

  • 7/28/2019 TP2 Traitement Signal MatLAB

    5/14

    Figure 5 : Signal sinusodal bruit par un bruit Gaussien de variance gale 0.16

    2.4.2 Synthse de Fourier :

    2.4.2.1 Cas dun signal crneau : Le programme permettant de calculer la dcomposition en srie de Fourier dun signal crneau est le

    suivant :

    n=input ('Entrer le nombre de coefficient n pour la synthse '); dt= 1./( 50*n*f0); % Incrment temporel t=(0:dt: 2/f0); % Cration du temps sur deux priodes du signal par incrment de dt A0=A/2; % Valeur moyenne du signal e=A0; % Boucle de calcul de la somme for i=1:n

    an=A*sinc(i/2); bn=0; xn=an* cos (2*pi*f0*i*t)+bn* sin(2*pi*f0*i*t); e=xn+e;

    end

    Nous pouvons nous apercevoir que dans la boucle for, nous calculons les coefficients an et bn.

    Nous pouvons synthtiser le signal crneau pour diffrent nombre de coefficients.

    Cas o n = 5 :

  • 7/28/2019 TP2 Traitement Signal MatLAB

    6/14

    Figure 6 : Signal crneau pour 5 coefficients

    Cas o n = 15 :

    Figure 7 : Signal crneau pour 15 coefficients

    Cas o n = 50 :

  • 7/28/2019 TP2 Traitement Signal MatLAB

    7/14

    Figure 8 : Signal crneau pour 100 coefficients

    2.4.2.2 Cas dun signal en dent de scie : Connaissant lquation des coefficients Cn et sachant que le signal est impair donc les an = 0, alors

    nous pouvons en dduire lexpression de bn :

    2. 1.

    Le programme permettant de calculer la dcomposition en srie de Fourier dun signal dent de scie

    est le suivant :

    n=input ('Entrer le nombre de coefficient n pour la synthse '); dt= 1./( 50*n*f0); % Incrment temporel t=(0:dt: 2/f0); % Cration du temps sur deux priodes du signal par incrment de dt A0=A/2; % Valeur moyenne du signal e=A0; % Boucle de calcul de la somme

    for i=1:n an=0; bn=( 2*(( 1)^i))/(pi*i); xn=an* cos (2*pi*f0*i*t)+bn* sin(2*pi*f0*i*t); e=xn+e;

    end

    Nous obtenons alors pour un nombre de coefficients gal 100, nous obtenons :

  • 7/28/2019 TP2 Traitement Signal MatLAB

    8/14

    Figure 9 : Signal en dent de scie avec un nombre de coefficients gal 100

    2.5 Filtrage linaire :

    2.5.1 Analyse de linfluence de la frquence de coupure :

    2.5.1.1 Frquence de coupure de 0.2 :

    Figure 10 : Signal filtr avec une frquence de coupure de 0,2

  • 7/28/2019 TP2 Traitement Signal MatLAB

    9/14

    Nous pouvons remarquer que le signal filtr ne ressemble pas du tout au signal dentre.

    2.5.1.2 Frquence de coupure de 2 :

    Figure 11 : Signal filtr avec une frquence de coupure de 2

    Nous pouvons constater que la frquence de coupure nest pas assez lev pour apercevoir un signal

    correct en sortie du filtre.

  • 7/28/2019 TP2 Traitement Signal MatLAB

    10/14

    2.5.1.3 Frquence de coupure de 4 :

    Figure 12 : Signal filtr avec une frquence de coupure de 4

    Nous pouvons remarquer que nous commenons dapercevoir le signal rel en sortie mais que la

    frquence de coupure est toujours trop faible.

    2.5.1.4 Frquence de coupure de 6 :

    Figure 13 : Signal filtr avec une frquence de coupure de 6

  • 7/28/2019 TP2 Traitement Signal MatLAB

    11/14

    Nous pouvons constater que le signal est bien le signal dentre filtr. La frquence de coupure est

    assez leve

    2.5.1.5 Frquence de coupure de 8 :

    Figure 14 : Signal filtr avec une frquence de coupure de 8

    Nous pouvons constater que le signal est bien le signal dentre filtr. La frquence de coupure est

    assez leve

  • 7/28/2019 TP2 Traitement Signal MatLAB

    12/14

    2.5.2 Analyse de linfluence de lordre du filtre :

    2.5.2.1 Filtre dordre 2 :

    La pente est de 40 dB/dec.

    2.5.2.2 Filtre dordre 4 :

    La pente est de 80 dB/dec.

  • 7/28/2019 TP2 Traitement Signal MatLAB

    13/14

    2.5.2.3 Filtre dordre 6 :

    La pente est de 120 dB/dec.

    2.5.3 Synthtisation dun signal bruit puis filtr : Nous avons synthtis un signal crneau bruit puis filtrer pour liminer le bruit :

    Figure 15 : Signal crneau bruit puis filtr

  • 7/28/2019 TP2 Traitement Signal MatLAB

    14/14

    Le programme permettant un tel rsultat est le suivant :

    f0=1; % Frquence du fondamental A=1; % Amplitude du signal n=25; % Nombre d'harmonique pour la synthse du crneau

    dt= 1/( 50*n*f0);

    %

    Incrment

    temporel

    t=(0:dt: 8/f0); % Cration du temps sur 8 priodes du signal par incrment de dt A0=A/2; % Valeur moyenne du signal e=A0; B=0.16 ; bruit=B* randn (size(t)); for i=1:n

    an=A*sinc(i/2); xn=an* cos (2*pi*f0*i*t); e=xn+e;

    end e=e+bruit figure (1) subplot (2,1,1) plot (t,e) xlabel ('temps') ylabel ('e(t)') title ('signal d entre du filtre') fn=1/( 2*dt) % Moiti de la frquence d'chantillonnage=Freq de Nyquist fc=input ('entrer la frquence de coupure du filtre'); % Frquence de coupure du filtre ordre= input ('entrer l ordre du filtre'); % Ordre du filtre [CB,CA]=butter (ordre,fc/fn); % Dtermination des coef du filtre numrique

    % correspondant au Passe Bas d'ordre n de % frquence de coupure fc

    [H,f]=freqz (CB,CA,15000 ,1/dt); % Obtention du gabarit du filtre H et frquences associes f figure (2) semilogx (f,20*log10(abs(H))) % Trac du Gabarit du filtre axis([0.1 10*fc 120 0]) grid title ('gabarit du filtre de Butterworth') xlabel ('frquence') ylabel ('Gain en dB') ef=filter (CB,CA,e); % Filtrage du signal e avec le passe bas figure (1) subplot (2,1,2) plot (t,ef) % Trac du signal filtr title ('signal filtr') xlabel ('temps') ylabel ('signal filtr')