Vous êtes sur la page 1sur 22

Haute Ecole d'Ingnierie et de Gestion du Canton de Vaud Dpartement Technologies Industrielles

Unit SES

Signaux et Systmes
Travaux pratiques

i nstitut d' A utomatisation i ndustrielle

Prof. Freddy Mudry

Table des matires


1 tude des systmes avec Matlab 1

1.1 1.2 1.3 1.4


2

tude de deux systmes analogiques . 1.1.1 Circuit RLC . . . . . . . . . . 1.1.2 Systme oscillant . . . . . . . Analyse avec Matlab . . . . . . . . . 1.2.1 Circuit RLC . . . . . . . . . . 1.2.2 Systme oscillant . . . . . . . Simulation d'un systme ractionn . Quelques fonctions utiles . . . . . . Analyse temporelle . . . . . . . . . . 2.1.1 Cration de quelques signaux 2.1.2 Valeurs moyennes, puissance . 2.1.3 Analyse des rsultats . . . . . Analyse spectrale . . . . . . . . . . . Reconstruction d'un signal . . . . . . Annexe . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . .

1 1 2 2 2 3 3 3
7

Analyse de signaux priodiques

2.1

2.2 2.3 2.4


3

. 8 . 8 . 8 . 9 . 9 . 10 . 10
13

Signaux et systmes numriques

3.1 3.2

3.3

3.4 3.5

Numrisation des signaux analogiques . . . . . . chantillonnage des signaux analogiques . . . . 3.2.1 Signal sinusodal . . . . . . . . . . . . . 3.2.2 Signal audio . . . . . . . . . . . . . . . . 3.2.3 Signal modul en frquence . . . . . . . Rponse temporelle des systmes numriques . . 3.3.1 Produit de convolution . . . . . . . . . . 3.3.2 Rponses impulsionnelles et temporelles 3.3.3 quations aux dirences . . . . . . . . Rponse frquentielle des systmes numriques . Annexe . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . .

13 13 13 13 15 15 15 16 16 17 18

Table des matires

Programme du laboratoire SES

TP1 TP2 TP3 TP4

SES : printemps 2008

Etude des systmes avec Matlab Analyse de signaux priodiques Signaux et systmes numriques Ralisation d'un ltre analogique

Dure 4 pr. 8 pr. 8 pr. 8 pr.

Semaines 2 4,6 8,10 12,14

Dates

ii

1 tude des systmes avec Matlab


Le but de ce travail est de mettre en pratique l'analyse des systmes analogiques en utilisant Matlab. Avant de vous lancer dans l'criture du chier Matlab, consultez la dernire section de ce TP dans laquelle vous trouverez le rappel de quelques fonctions utiles.

1.1 tude de deux systmes analogiques

k
u1(t) C u2(t)

m
y(t)
Fig.

F(t)

1.1: Deux systmes analogiques

1.1.1 Circuit RLC


Pour le circuit RLC de la gure 1.1 et les valeurs suivantes

u1 (t) = 10 V (t), R = 100 , L = 10 mH, C = 1 F, CI nulles


1. crivez l'quation direntielle dcrivant u2 (t). 2. crivez son quation caractristique, calculez ses racines et dcrivez sa rponse transitoire.

tude des systmes avec Matlab

3. Transformez de Laplace l'quation direntielle pour obtenir la fonction de transfert U2 (s) H (s) U1 (s) 4. Calculez 0 , Q0 et les ples de H (s). 5. Analysez et commentez.

1.1.2 Systme oscillant


Considrant le systme oscillant de la gure 1.1 avec les valeurs numriques suivantes

m = 0.1 kg, k = 10 N/m, = 0.5 N/(m sec1 ), F (t) = m g (t)


1. crivez l'quation direntielle dcrivant y (t). 2. Calculez ses racines et dcrivez sa rponse transitoire. 3. Transformez de Laplace l'quation direntielle pour obtenir la fonction de transfert Y (s) H (s) F (s) 4. Calculez 0 , Q0 et les ples de H (s). 5. Quelles sont les units de H (s) ? Que vaudra l'longation du ressort lorsque la masse est au repos ? 6. Analysez et concluez.

1.2 Analyse avec Matlab

1.2.1 Circuit RLC


Aprs avoir lu attentivement la dernire section de ce TP, ouvrez un chier Matlab dbutant avec les lignes suivantes.

% calcul d'un circuit RLC clear all ; close all ; clc ; format compact ; format short g ; % description d'un circuit RLC U1 = ... ; R = ... ; L = ... ; C = ... ; w0 = ..., Q0 = ... num = [...] ; den = [...] ; Hs = tf(...) ; ........

1.3 Simulation d'un systme ractionn

% calcul de la rponse temporelle tmax = ... ; Npts = ... ; dt = tmax / Npts ; tt = 0 :dt :tmax-dt ; ........ % calcul de la rponse frquentielle fmax = ... ; Npts = ... ; df = fmax / Npts ; ff = 0 :df :fmax-df ; f_bode = logspace(0, log10(fmax),Npts) ; % que fait cette fonction ? ........
Compltez l'criture de ce chier de manire raliser les oprations suivantes :      acher les ples du systme ; rechercher ses pulsations naturelles et facteurs d'amortissement ; calculer et tracer sa rponse indicielle ; calculer sa rponse frquentielle ; tracer sa rponse frquentielle (module et argument) avec des axes linaires puis dans un diagramme de Bode.

Analysez et concluez.

1.2.2 Systme oscillant


Crez un nouveau chier pour tudier le systme oscillant de manire similaire celle du circuit RLC. Analysez les rsultats obtenus et comparez avec l'tude thorique. Concluez.
1.3 Simulation d'un systme ractionn

Dans ce qui suit, on s'intresse l'oscillateur de Wien (voir EAN2) dcrit par le gain A et le taux de raction jRC (j ) = 1 + 3 jRC + (jRC )2 Dessinez le schma-bloc de l'oscillateur puis simulez son comportement lorsque le gain vaut 2.9, 3.0 ou 3.1. Observez, analysez et commentez.
1.4 Quelques fonctions utiles

Dans l'analyse de systmes linaires avec Matlab, la manire la plus simple de travailler avec ceux-ci est de les dnir avec des fonctions de transfert dont la forme gnrale est la suivante

G(s) =

N (s) a0 + a1 s + a2 s 2 + = D(s) b 0 + b 1 s + b 2 s2 +

tude des systmes avec Matlab

Ces fonctions de transfert peuvent reprsenter aussi bien des quations direntielles linaires que des gains en tension ou en courant, des impdances, des admittances ou toute autre relation dcrivant des systmes linaires. Une fois la fonction de transfert dnie, Matlab ore un grand nombre de fonctions permettant de rpondre la plupart de nos interrogations. Quelques fonctions frquemment utilises sont rappeles ci-aprs : 1. dnition d'une fonction de transfert d'ordre 2

2.

3. 4.

5. 6.

7. 8. 9. 10.

11.

12. 13.

num = [a2, a1, a0] ; den = [b2, b1, b0] ; G1 = tf(num,den) ; mise en cascade ou en parallle de fonctions de transfert Gserie = G1*G2*G3 ; Gparr = G1+G2+G3 ; achage d'une fonction de transfert zpk(G1) ; recherche des ples et des zros pk = roots(den) ; zk = roots(num) ; recherche des pulsations naturelles et facteurs d'amortissement [wn, z] = damp(G1) ; calcul d'une fonction de transfert en boucle ferme o G(s) reprsente la branche directe et H (s) celle de retour Gbf = feedback(G,H,-1) ; extraction du numrateur et dnominateur d'une fonction de transfert [num, den] = tfdata(Gbf,'value') ; calcul d'une rponse indicielle aprs dnition du vecteur temporel yt = step(G1, tt) ; calcul de la rponse temporelle y (t) un signal x(t) prdni yt = lsim(G1, xt, tt) ; calcul d'une rponse frquentielle aprs dnition du vecteur frquentiel Gjw = freqs(num,den, 2*pi*ff) ; mod_Gjw = abs(Gjw) ; phi_Gjw = angle(Gjw) ; traage d'une fonction subplot(...,...,...) ; plot(...,...,...) ; ou semilogx(...,...,...) ; title('...') ; xlabel('...') ; ylabel('...') ; recherche de la longueur d'un vecteur lgxt = length(xt) ; recherche des composantes d'un vecteur dpassant le 30% de sa valeur maximum kf = find(xt > 0.3*max(xt)) ;

1.4 Quelques fonctions utiles

14. recherche de la premire composante d'un vecteur dpassant le 30% de sa valeur maximum

kf = min(find(xt > 0.3*max(xt))) ;

N'oubliez pas la fonction help qui vous donnera tous les dtails ncessaires au sujet de ces fonctions et de nombreuses autres.

tude des systmes avec Matlab

2 Analyse de signaux priodiques


Le but de ce travail pratique est d'apprendre gnrer et analyser des signaux dans les domaines temporels et frquentiels. Pour ce faire, vous crerez des signaux priodiques tels que les suites d'impulsions rectangulaires (sir), triangulaires (sit), exponentielles (sie) et oscillantes amorties (sinam) pour les analyser ensuite.

1 x1(t) 0 1 5 4 x2(t) 2 0 5 2 x3(t) 1 0 5 2 x4(t) 0 2 5 1 x5(t) 0.5 0 0.5 5 0 5 10 temps [ms] 15 20 25

10

15

20

25

10

15

20

25

10

15

20

25

10

15

20

25

Fig.

2.1: Exemples de signaux

Commencez par lire la section 2.4 et observez quel point il est simple de crer des signaux priodiques o, sauf pour la sit, deux lignes de code susent. Copiez dans votre rpertoire de travail les fonctions sir.m, sit.m, sie.m, sinam.m gnratrices de quelques signaux utiles. Puis, dans la fentre de commandes Matlab, tapez help sir.m ou autres pour voir comment on utilise ces fonctions.

Analyse de signaux priodiques

2.1 Analyse temporelle

2.1.1 Cration de quelques signaux


crivez un chier signaux_a.m dans lequel vous calculerez et tracerez les signaux de la gure 2.1. Puis : 1. Gnrez un vecteur temps constitu de N = 1000 valeurs comprises entre tmin et tmax . 2. Pour chacun des signaux, dnissez les paramtres tdec , T0 , rc, , Tp ainsi que l'amplitude A et le dcalage en ordonne. 3. Calculez et tracez les cinq signaux. 4. Modiez les valeurs des paramtres ; est-ce que tout se passe bien ? est-il raisonnable de prendre des valeurs faibles pour N ?

2.1.2 Valeurs moyennes, puissance


Pour mmoire, on rappelle que la puissance d'un signal peut tre calcule dans les domaines temporel ou frquentiel (thorme de Parseval)

Px =

1 T

t0 +T t0

x2 (t) dt =
k

|X (jk )|2

(2.1)

et que la puissance totale d'un signal est gale la somme des puissances DC et AC
2 2 Px = Pdc + Pac = Xdc + Xac

(2.2)

On en dduit alors que la puissance et la valeur ecace de la composante alternative valent 2 Pac = Px Xdc , Xac = Pac (2.3) Comme les signaux que l'on traite avec Matlab sont des grandeurs analogiques numrises, il est important de dnir comment on calcule les valeurs associes aux signaux analogiques x(t) ou numriques x[n] :  la composante continue ou valeur moyenne du signal

Xdc =

1 T

t0 +T

x(t) dt,
t0

Xdc =

1 N

N 1

x [n ]
n=0

(2.4)

 la puissance normalise du signal

Px =

1 T

t0 +T t0

x2 (t) dt,

Px =

1 N

N 1

x2 [n]
n=0

(2.5)

An d'obtenir les paramtres caractristiques de vos signaux, crivez une fonction fournissant ces valeurs :

function [Xdc, Xac, Px] = ParamSignal (xt) ;


Quatre lignes de codes susent si vous employez les deux fonctions lmentaires, mais trs utiles, que sont sum et length.

2.2 Analyse spectrale

2.1.3 Analyse des rsultats


Pour chacun des signaux ci-dessus, 1. rappelez l'expression des valeurs thoriques des paramtres Px , Pdc , Pac ; tirez en Xef f , Xdc , Xac et calculez leur valeur avec Matlab ; 2. utilisez votre fonction ParamSignal.m pour calculez les valeurs mesures sur vos signaux ; 3. l'aide d'un tableau, comparez ces rsultats aux valeurs thoriques et expliquez les dirences ventuelles. Sinus Triangle Exponentielle Impulsion Sinus amorti

Xdc thor. Xdc mes. Xac thor. Xac mes.


2.2 Analyse spectrale

Le travail qui est demand dans cette section s'inspire directement du chapitre consacr l'analyse spectrale numrique. Vous devez donc commencer par relire son contenu et vous attachez plus particulirement aux deux premiers exemples d'analyse spectrale. Une fois cela fait, copiez dans votre rpertoire de travail le chier enreg_signaux.txt et crez un nouveau chier signaux_c.m dans lequel vous eectuerez les oprations et analyses suivantes. 1. Chargez le chier enregistr et extrayez les informations utiles

mesure = load('enreg_signaux.txt') ; tt = mesure( :,1) ; xt = mesure( :,2) ; N = length(xt) ; dt = tt(2) - tt(1) ; duree = N * dt ; 2. Tracez et observez le signal x(t) ;
a) que valent sa puissance et ses valeurs moyenne et ecace ? b) que valent la dure du signal et sa priode d'chantillonnage ? c) que vaudront l'incrment frquentiel et la frquence maximum du spectre ? 3. Calculez le vecteur f [k ] des frquences et le spectre X [jk ] du signal x(t)]. Vriez que la puissance calcule avec X [jk ] donne bien le mme rsultat que celle calcule avec x(t)]. 4. Tracez (subplot(2,1,k)) les spectres d'amplitudes unitlatraux Ak et Aw,k avec des axes satisfaisants ; observez et analysez ; a) pouvez-vous mettre en vidence des composantes spectrales ? b) que valent leurs frquence, amplitude et phase ? c) quelle est l'incertitude sur la valeur des frquences ?

Analyse de signaux priodiques

d) commentez l'allure du contenu spectral. 5. partir des composantes spectrales choisies comme signicatives, reconstruisez le signal original et calculez sa valeur ecace.

2.3 Reconstruction d'un signal

Comme on l'a vu dans l'analyse de Fourier, la reconstruction ou synthse d'un signal se fait partir de ses K composantes spectrales X (jk ) :
+K

x(K ) (t) =
k = K

X (jk ) exp (+j 2kf0 t)

(2.6)

En pralable votre travail, rappelez ce que valent les spectres d'une SIR et d'une SIT puis ouvrez un chier signaux_b.m dans lequel vous crerez des signaux de priode T0 = 1 ms et d'approximation K = 5, 10, 20. Pour cela : 1. Construisez les trois signaux priodiques suivants pour une dure 5T0 : a) un signal triangulaire similaire celui de la gure 2.1 ; b) une SIR centre caractrise par A = 5, t = 0.2 ms ; c) un signal carr dmarant au anc montant et d'amplitude comprise entre -2.5 et +2.5. 2. Pour chacun des signaux tracez les trois approximations (subplot(3,1,k)) ; observez-les et concluez. 3. Pour chacun des trois signaux, calculez leur puissance dans les domaines temporel et frquentiel. Comparez et expliquez les dirences.

2.4 Annexe

Voici les chers Matlab permettant de gnrer les signaux particuliers dnis en introduction. Vous noterez quel point la fonction modulo est utile pour gnrer des signaux priodiques.
Suites d'impulsions rectangulaires (sir.m)

function [x] = sir(temps, T0, rc) ; % sir(temps, T0, rc) % Calcul d'une suite d'impulsions rectangulaires d'amplitude 1,dure 5T_{0} % de rapport cyclique rc demarrant lorsque temps = 0 % Parametres : % temps = variable temporelle % rc = rapport cyclique = 0.5 par defaut

10

2.4 Annexe

% Exemple d'utilisation : % xt = amplitude * sir((temps+decalage),T0, rc) ; % valeurs par defaut if nargin == 2, rc = 0.5 ; end ; tm = mod(temps,T0) ; % rampe comprise entre 0 et T0 x = tm/T0 < rc ; % x = 1 ou 0
Suites d'impulsions triangulaires (sit.m)

function [x] = sit(temps, T0, rc) ; % sit(t, T0, rc) % Calcul d'une suite d'impulsions % priode T0, de rapport cyclique % Parametres : % temps = variable % T0 = priode % rc = rapport cyclique = 0.5 par % Exemple d'utilisation : % xt = amplitude * sit(temps, T0,

triangulaires d'amplitude 1, de rc demarrant lorsque temps = 0

defaut rc) ;

% verification des parametres d'entree if nargin == 2, rc = 0.5 ; end ; % valeur par defaut if (rc > 1)|(rc < 0) error('Le rapport cyclique doit etre compris entre 0 et 1') ; end ; % creation du signal x = 0 x = zeros(size(temps)) ; tm = mod(temps,T0) ; % rampe comprise entre 0 et T0 % creation des triangles k1 = find(tm/T0 < rc/2) ; x(k1) = tm(k1)/T0 ; % rampe positive 0 ... rc/2 k2 = find((tm/T0 >= rc/2)&(tm/T0 < rc)) ; x(k2) = rc - tm(k2)/T0 ; % rampe negative rc/2 ... 0 % normalisation x = x/max(x) ;
Suites d'impulsions exponentielles amorties (sie.m)

function [x] = sie(temps, T0, tau) ; % sie(temps, T0, tau) % Calcul d'une suite d'impulsions exponentielles d'amplitude 1, % de constante de temps tau demarrant lorsque temps = 0 % Parametres : % temps = variable temporelle % T0 = periode % tau = constante de temps % Exemple d'utilisation : % xt = amplitude * sie(temps+decal, T0, tau) ;

11

Analyse de signaux priodiques

tm = mod(temps,T0) ; % rampe comprise entre 0 et T0 x = exp(-tm/tau) ;


Suite de sinusodes amorties (sinam.m)

function [y] = sinam(temps, T0, tau, Tp) ; % sinam(temps, T0, tau, Tp) % Calcul d'une suite de sinusoides amorties de periode Tp, % d'amortissement tau se repetant avec la periodicite T0 % Utilisation : % yt = amplitude * sinam(temps+decal, T0, tau, Tp) ; tm = mod(temps,T0) ; % rampe comprise entre 0 et T0 y = exp(-tm/tau).*sin(2*pi*tm/Tp) ;

12

3 Signaux et systmes numriques


3.1 Numrisation des signaux analogiques

Lorsqu'on analyse et/ou traite signaux par programmation (Matlab ou autres), ces signaux sont par dnition numriques. Au sens strict, on ne peut donc plus parler de signaux analogiques. Cependant, on se permet de le faire si l'incrment temporel utilis pour les dcrire est beaucoup plus petit que le temps caractristique minimum du signal. Dans tout ce qui suit, il est donc extrmement important de bien distinguer au niveau des variables entre les signaux analogiques numriss xt (quivalent de x(t)) et les signaux chantillonns xn (quivalent de x[n]) qui sont tous deux numriques. Dans le premier cas, on choisira un nombre lev de points de manire avoir un incrment temporel dt trs petit alors que dans le deuxime cas, l'incrment temporel Te sera x par la frquence d'chantillonnage qui doit respecter le thorme de Shannon ; gnralement, le nombre de points sera beaucoup moins lev que dans le premier cas. Une illustration en est donne dans la gure 3.1.

3.2 chantillonnage des signaux analogiques

3.2.1 Signal sinusodal


Construisez un signal x(t) de priode T0 = 1 ms de dure tmax = 20 ms avec un incrment temporel de 20 s. Tracez ce signal (plot(tt,xt)) dans une fentre subplot (5,1,1). chantillonnez ce signal avec les frquences d'chantillonnage fe valant 4kHz, 2kHz, 1.1kHz, 0.9kHz et tracez (plot(tn,xn)) les signaux x[n] dans les fentres (5,1,k). Observez et concluez.

3.2.2 Signal audio


Dans cette section, vous allez crer un son pur chantillonn 8 kHz durant 1 seconde. l'aide de la carte-son, vous couterez plusieurs sons dont les 9 frquences sont comprises entre 800 Hz et 7200 Hz. Pour ce faire, crez une boucle for k1 = 1 :9 dans laquelle vous  gnrez les signaux sinusodaux de frquence f0 = k1*800 et d'amplitude 1 ;  tracez les graphes correspondants avec

subplot(3,3,k1) ; plot(tn(1 :80),xn(1 :80)) ; ylabel(num2str(f0)) ;

13

3 Signaux et systmes numriques

2 2

2 x 10

3
3

2 20

10

10

20

30

2 2

0 1 temps [s]

2 x 10

3
3

2 20

10

0 10 temps [t/Te]

20

30

% signal analogique numris tmin = -2e-3 ; tmax = +10e-3 ; Npts = 1000 ; dt = (tmax - tmin)/Npts ; tt = tmin :dt :tmax-dt ; A = 2 ; T0 = 1e-3 ; xt = A*sin(2*pi*tt/T0) ; subplot(2,2,1) ; plot(tt,xt) ; subplot(2,2,2) ; plot(tt,xt,'.') ; xlabel('temps [s]') ;

% signal chantillonn tmin = -2e-3 ; tmax = +10e-3 ; fe = 8000 ; Te = 1/fe ; tn = tmin :Te :tmax-Te ; A = 2 ; T0 = 1e-3 ; xn = A*sin(2*pi*tn/T0) ; subplot(2,2,3) ; plot(tn/Te,xn,'.') ; subplot(2,2,4) ; plot(tn/Te,xn,tn/Te,xn,'.') ; xlabel('temps [t/Te]') ;

Fig.

3.1: Exemple de signal numris ou chantillonn

14

3.3 Rponse temporelle des systmes numriques

 coutez le signal avec soundsc(xn,fe) ; pause(2) ; Connaissant la frquence d'chantillonnage et la dure du signal,  calculez les frquences fk du spectre numrique ;  rptez les oprations ci-dessus en traant les spectres Xjk dans une nouvelle gure : Xjk = fft(xn)/Npts ; subplot(3,3,k1) ; plot(fk,abs(Xjk)) ;  coutez, observez et concluez.

3.2.3 Signal modul en frquence


Dans cette section vous gnrerez un signal dont la frquence varie linairement au cours du temps (signal chirp). Aprs avoir trac le signal et son volution spectrale, vous pourrez l'couter et conclure ce point consacr l'chantillonnage des signaux. 1. Sachant qu'un signal chirp est dcrit par

x(t) = sin((t)) = sin 2 f1 t +


calculez sa frquence instantane

2 t 2

f (t) =
Considrant que l'on choisit

1 d(t) 1 (t) 2 2 dt fe = 8 [kHz] = 8000 [Hz/sec]

0 t tmax = 1 [sec] f1 = 100 [Hz]

2. 3. 4.

5.

calculez les frquences fmin , fmax . A quel instant t, la frquence vaudra-t-elle 4 kHz ? Tracez la main l'volution de la frquence f (t) ; imaginez l'allure du signal x(t). Que se passera-t-il d'anormal l'coute de ce signal ? Calculez le signal x[n] ; tracez-le avec la fonction large_plot.m (voir en annexe). Dans une nouvelle gure, tracez son spectrogramme specgram(xn,Nfft,fe), avec le code des couleurs colorbar et Nfft valant 128 ou 256. Qu'est-ce qui change avec 128 et 256 ? coutez le signal et concluez.

3.3 Rponse temporelle des systmes numriques

3.3.1 Produit de convolution


On a vu que la rponse temporelle d'un systme linaire causal peut se calculer avec le produit de convolution suivant min(n,N 1) y [n ] = h[k ] x[n k ], n = 0, 1, 2, 3,
k=0

15

3 Signaux et systmes numriques

La fonction conv existe bien entendu dans Matlab. Cependant, an de bien comprendre l'algorithme de convolution, vous crerez votre propre fonction [yn] = myconv(hn,xn). Pour cela : 1. Calculez la main la convolution entre xn = [1,2,3,4] et hn = [5,6] ; quelle est la longueur du rsultat yn ? 2. Qu'est ce qui change si on augmente la longueur de xn avec des 0 (par exemple, xn = [1,2,3,4,0,0]) ? 3. crivez un chier myconv.m dont la premire ligne sera

function [yn] = myconv(hn,xn) ; 4. Dnissez les longueurs des signaux dont vous aurez besoin. crivez la double boucle for vous permettant de calculer yn(n). 5. Testez votre fonction avec les signaux dnis au point 1.

3.3.2 Rponses impulsionnelles et temporelles


On dsire dcouvrir le comportement de systmes dcrits par les rponses impulsionnelles suivantes :

h1n h2n h3n h4n h5n h6n

= = = = = =

[1 1 1 [5 4 3 [1 2 3 [1 2 3 0.7^n ; [3.27,

1 1] ; 2 1] ; 4 5 4 3 2 1] ; 4 5 -5 -4 -3 -2 -1] ; % n = 0...10 ; -0.7^n] ; % n = 0...10 ;

Pour ce faire : 1. Tracez ces rponses impulsionnelles avec subplot(3,2,k) ; plot(hkn,'.') ; observez et commentez. 2. Dans une nouvelle gure, calculez et tracez leur rponse yn = conv(xn,hnk) un signal carr xn = [0,ones(1,20),zeros(1,20)]. 3. Observez et analysez ces rponses ; quels types de ltres a-t-on aaire ? 4. Quelles sont les longueurs de xn et yn ? Justiez leur valeur. 5. Que faut-il faire pour que le gain des ltres passe-bas soit gal 1 ?

3.3.3 quations aux dirences


Un ltre ou systme numrique d'ordre 2 est dcrit de manire gnrale par une quation aux dirences telle que

y [n] + a1 y [n 1] + a2 y [n 2] = b0 x[n] + b1 x[n 1] + b2 x[n 2]


ou par sa fonction de transfert

H (z )

b 0 + b 1 z 1 + b 2 z 2 Y (z ) = X (z ) 1 + a1 z 1 + a2 z 2

16

3.4 Rponse frquentielle des systmes numriques

1. crivez une fonction [yn] = filtre_ed2(b,a,xn) vous permettant de calculer la rponse temporelle d'un ltre dcrit par les vecteurs a et b de longueur 2. 2. Considrant un ltre dcrit par a = [1,-1.4,+0.45] et b = [1,2,1], calculez ses ples et ses zros. 3. Quel sera le comportement transitoire du systme ? Que faut-il faire pour que le gain du ltre soit gal 1 ? 4. Calculez et tracez sa rponse xn = [0, ones(1,50)]. 5. Observez et commentez ; de quel type de ltre s'agit-il ? 6. Rptez les points 2 5 lorsque a) a = [1,-1.4,+0.7] et b = [1,2,1] ; b) a = [1,-1.4,+0.9] et b = [1,-2,1] ; c) a = [1,-1.4,+0.45] et b = [1,-2,1] ; d) a = [1,-1.4,+0.7] et b = [1,-2,1] ; e) a = [1,-0.7,0] et b = [1,0,0] ; 7. Comparez vos rsultats avec ceux fournis par la fonction filter(b,a,x) de Matlab.

3.4 Rponse frquentielle des systmes numriques

Connaissant la fonction de transfert d'un systme numrique

H (z )

Y (z ) b 0 + b 1 z 1 + b 2 z 2 = X (z ) 1 + a1 z 1 + a2 z 2

on peut facilement calculer sa rponse frquentielle en remplaant l'oprateur de retard z 1 par sa transforme de Fourier exp(j ) o est la pulsation normalise

2f Te = 2
On obtient alors

f fe

H (j )

Y (j ) b0 + b1 ej + b2 ej 2 = X (j ) 1 + a1 ej + a2 ej 2

1. crivez une fonction [H] = myfreqz(b,a,W) permettant de calculer la rponse frquentielle d'un systme numrique d'ordre 2. 2. Calculez et tracez les modules et phases des rponses frquentielles des ltres numriques tudis plus haut. 3. Comparez vos rsultats ceux fournis par la fonction freqz(b,a,W) de Matlab.

17

3 Signaux et systmes numriques

3.5 Annexe

Voici le code du chier large_plot.m qui permet de tracer des enregistrements de longue dure.

function [] = large_plot(x,y) ; % [] = large_plot(x,y) ; % plot a graph on 10 sub-graphs Npts = length(x) ; Ndiv = 10 ; Npdiv = round(Npts/Ndiv) ; min_y = min(y) ; max_y = max(y) ; for kk = 1 :Ndiv deb = 1+Npdiv*(kk-1) ; fin = deb+Npdiv-1 ; subplot(Ndiv,1,kk) ; plot(x(deb :fin),y(deb :fin)) ; axis([x(deb),x(fin),min_y,max_y]) ; end ;

18