Cours:Elen4 TNS TP FxTransfertStabilité

De troyesGEII
Aller à : navigation, rechercher

Retour à la page du cours

TP2 : Fonction de transfert et stabilité des filtres

Cette séance est consacrée à l'affichage des réponses d'un filtre numérique et à l'étude de sa stabilité. Vous travaillerez avec matlab.

Fonctions de transfert

Exercice 1

À l’aide de la fonction impz(), obtenir les premiers termes de la réponse impulsionnelle h(n) du SLIT causal dont la fonction de transfert est

H(z) =

1+2z-1+z-2


1+0,5z-1+0,25z-2

Lister les valeurs obtenues et les confronter à celles obtenues en TD. Tracer le graphe de h(n).

Exercice 2

a) Calculer et afficher le module et le déphasage de la fonction transfert suivante :

H(z) =

3z6−0,0047z5+1,1739z4+0,0005z3−1,7220z2+0,0043z−2,4518


z6 −0,0024z5 +1,4618z4 −0,0042z3 +1,3215z2 −0,0019z+0,7389

  • Vous pourrez utiliser freqz(B,A,W) pour obtenir le tableau des valeurs de la réponse en fréquences directement à partir des coefficients du filtre (pour des pulsations définies dans le tableau W).

b) Tracer le module en dB. Pour mémoire : |HdB| = 20log(|H|). Le log se codant par log10()

Exercice 3

Soit un filtre exprimé sous la forme de facteurs composé de polynômes du premier degré, dont la fonction de transfert est

H(z) =

z+1


(z + 0, 38)(z − 0, 46)

a) Calculer et représenter graphiquement le module et le déphasage du filtre défini par cette fonction de transfert.

b) Occasionnellement, il peut être intéressant de connaitre le temps de propagation de groupe τ(ω) défini par :

τ(ω) =


Le temps de propagation de groupe fait référence aux lignes de transmission, dans lesquelles les différentes fréquences d’un signal se propagent à des vitesses différentes, ce qui entraîne une dispersion dans le temps de l’énergie du signal.

De façon pratique et pour une période d’échantillonnage Ts, τ s’obtient par Ts*grpdelay(B,A,W). Calculer et tracer τ(ω) pour Ts = 0,0001.

Exercice 4

Voici une collection de fonctions de transfert Hi(z) du second ordre :

Hi(z) =

Ni(z)


z2 + 0,5z + 0,25

Calculer et tracer le module de ces fonctions de transferts pour

a) N1(z) = (1+z)2

b) N2(z) = (1-z)2

c) N3(z) = (1-z2)

d) N4(z) = (z2 + 0,7z + 1)

e) N5(z) = (0,25z2 + 0,5z + 1)

Identifier chacun de ces filtres.

Stabilité de filtres

Exercice 1

Soit le polynôme D(z) = z7 + 0,5z6 + 0,4z5 + 2z4 + 0,75z3 + 0,8z2 + 0,6z + 0,55

a) Saisir et exécuter le script suivant

clear ;

D = [1 0.5 0.4 2 0.75 0.8 0.6 0.55];

R = roots(D);
RR = real(R);
IR = imag(R);
plot(RR,IR,*); axis equal;
hold on;
w = 0:0.01:pi;
plot(cos(2*w),sin(2*w));
hold off;
disp(Module Angle en deg.);
disp([abs(R) (angle(R))*180/pi]);

b) Indiquez les racines de D qui sont à l’intérieur du cercle unité et celles qui sont à l’extérieur.

c) De façon plus concise, la fonction zplane() permet de placer les pôles et les zéros par rapport au cercle unité. Utiliser cette fonction pour obtenir un graphe identique à la première question.

Exercice 2

Déterminer si les racines du polynôme suivant sont à l’intérieur du cercle unité ou non (cf. TD pour comparer) :

D(z) = 2z4 + 3z3 + 4z2 + z + 1

Exercice 3

Déterminer si le SLIT causal suivant est stable (cf. TD pour comparer) :

H(z) =

1


5z4 + 3z3 + 6z2 + z + 2

Tracer sa réponse impulsionnelle pour contrôler.

Exercice 4

Déterminer si les fonctions de transfert suivantes caractérisent un SLIT causal stable ou non :

Ha(z) =

z+1


z2 + 0,2z + 0,4

Hb(z) =

1+0,4z+0,3z2


z2 + 0,4z + 1

Hc(z) =

z2(z+3)


z2 + 0,8z + 0,5

Hd(z) =

z-1+1


0,25z-2 + 0,4z-1 + 1

Tracer les réponses impulsionnelles pour contrôler.

Exercice 5

Lorsque des paramètres sont présents dans la fonction de transfert du système, il est possible de déterminer graphiquement les valeurs de ces paramètres qui entrainent un système stable. Par exemple pour un SLIT dont le dénominateur de la fonction de transfert est

D(z) = 2z3 + z2 + c z + 1

Le script suivant met en place un slider permettant de régler les valeurs de c et d'afficher les pôles :

clear all
R = roots(D);
zplane(R);
D = [2 1 0 1];
slmin=0; slmax=5;
hsl = uicontrol(Style,slider,...Min,slmin,Max,slmax ,...SliderStep,[1 1]./50,...Position,[20 20 200 20]);
set(hsl,Callback, @sliderCallback);

avec la fonction sliderCallback() appelée à chaque déplacement du slider :

function sliderCallback(h,e)
  c = get(h,Value);
  zplane(roots([2 1 c 1]));
  legend([c=num2str(c)])
end