Introduction au filtrage analogique et numérique

Cours 10h30, TD 4h30, deux partiels, un sur la prtie analogique et un sur la partie numérique

Evaluation : 50% premier partiel, 50% deuxième partiel

contenu de cours




Des outils de calcul
              
Amax en dB: Amin en dB: fp (le coin de la bande passante): fa (le coin d la bande atténuée):
L'ordre du filtre Butterworth= L'ordre du filtre ChebyShev=
            
Valeur de L en Henri: Valeur de C en Farad: Valeur de B: Valeur de w0 (pulsation): Valeur de Rs = Rl (ohm):
Une self est trabsformée en une mise en série d'une self et d'un condensateur: Valeur de L = Valeur de C = Un condensateur est trabsformé en une mise en parallèle d'une self et d'un condensateur: Valeur de L = Valeur de C =



Quelsues Fonctions Matlab

            [z,p,k] = buttap(n);          % Butterworth filter prototype d'odre n
            [num,den] = zp2tf(z,p,k);     % Convert to transfer function form
            [H,w]=freqs(num,den);
            semilogx(w,20*log10(abs(H)));grid on;
        
            wp=1000; wa=3000;Amax=1; Amin=50;
            [n,wn]=buttord(wp,wa,Amax,Amin,'s');     % Butterworth filter prototype
            [num,den]=butter(n,wn,'s');
            [H,w]=freqs(num,den);
            semilogx(w,20*log10(abs(H)));grid on;
        
            wp=1000; wa=3000;Amax=1; Amin=50;
            [n,wn]=cheb1ord(wp,wa,Amax,Amin,'s');     % Chebyshev lowpass filter 
            [num,den]=cheby1(n,Amax,wn,'s');
            [H,w]=freqs(num,den);
            semilogx(w,20*log10(abs(H)));grid on;
        
            wp=[w1 w2];
            wa=[w3 w4];
            [n,wn]=buttord(wp,wa,Amax,Amin,'s');     % Butterworth filter prototype
            [n,wn]=cheb1ord(wp,wa,Amax,Amin,'s');     % Chebyshev lowpass filter 
            [num,den]=butter(n,wn,ftype,'s');  %ftype peut être 'low','high','stop' ou 'bandpass'
            [num,den]=cheby1(n,Amax,wn,'s');
            [H,w]=freqs(num,den);
            semilogx(w,20*log10(abs(H)));grid on;
        
            sys=tf(1,[1 2 2 1],'variable','p'); % create a rational system
            p=tf('p');
            sys2=sys*(p^2+2*p+1);
            bode(sys);
        
            syms p
            f=1/(p^3+2*p^2+2*p+1);
            fplot(f); % tracer la courbe de la fonction 
            factor(f); % factorise la fontion f en élément simple
            g=10/p;
            h=compose(f,g); % donne f(g(p))
            simplify(h); 
            poly2sym([1 2 2 1],p); %donne un polynom symbolique
            sym2ploy(1/f); %donne les coefficients d'un polynome symbolique      
            vpa(h);  %transforme les valeur rationnelles en format décimal
            digits(5); % régle la précision dans l'affichage'
        
        Utiliser la fonction residue pour decomposer une expression rationnelle en somme d'éléments simples
      
              % definition de H(p)
              % par exemple
              b=[1 2 5];a=[1 5 6];
              % fs = 1/Ts, fréquence d'échantillonnage
              [bz, az]=impinvar(b,a,fs);
              freqz(bz, az);
        
            % definition de H(p)
            % par exemple
            b=[1 2 5];a=[1 5 6];
            % fs = 1/Ts, fréquence d'échantillonnage
            [bz, az]=bilinear(b,a,fs);
            freqz(bz, az);
        
          function [b,a] = filtre_passebande_numerique(F3,F1,F2,F4,Amax,Amin,Fe)
          % Les frequence analogiques d'un filtre passe-bande est donnée
          % On donne le H(Z) du filtre numérique qui le réalise (Butterworth)
          % La méthode est bilineaire
          
          % 1- calcul de gabarit numerique
          W=2*pi*[F1 F2 F3 F4];
          w=W/Fe;  %omega=OMEGA.Te
          
          % 2- Transformation bilineaire pour trouver le gabarit analogique de referencec(T=1)
          % W=(2/T)tan(w/2), 
          Wr=2*tan(w/2);
          
          % 3- Normaliser et calcul du gabarit prototype
          if (Wr(1)*Wr(2)>Wr(3)*Wr(4))
              Wr(3)=Wr(1)*Wr(2)/Wr(4);
          else
              Wr(4)=Wr(1)*Wr(2)/Wr(3);
          end
          Wr0=sqrt(Wr(1)*Wr(2));
          B=(Wr(2)-Wr(1))/Wr0;
          WPa=(Wr(4)-Wr(3))/(Wr(2)-Wr(1)); % coin de la bande attenuee du filtre prototype
          % Gabarit prototype est donc connue
          %---------------------------------------------------
          % Calcul de Hp(P)
          e = sqrt(10^(0.1*Amax)-1);  % epsilon
          % calcul de l'ordre du filtre
          [n,wn]=buttord(1,WPa,Amax,Amin,'s');
          %calcul de HP(s)
          [b,a]=butter(n,wn,'s'); %HP(s)=b(s)/a(s)
          %denormalisation pour calculetr le filtre passe-bande
          % P-> 1/B(p/W0+w0/p)
          syms p
          H=poly2sym(b,p)/poly2sym(a,p);
          digits(4);
          pretty(vpa(H))
          F=1/B*(p/Wr0+Wr0/p);
          [Num,Den]=numden(collect(compose(H,F)));
          b=sym2poly(Num); a=sym2poly(Den);
          [b,a]=bilinear(b,a,1);
          end
        
pour l'appeler on peut utiliser l'exemple ci-dessous :

          F1=900;F2=1100;F3=600;F4=1400;Amax=2;Amin=20;Fe=5000;
          [b,a]=filtre_passebande_numerique(F3,F1,F2,F4,Amax,Amin,Fe);
          sys=tf(b,a,1/Fe,'variable','z^-1')  % ceci est juste pour présenter sur l'écran le H(z)
          [H,w]=freqz(b,a);plot(w*Fe/(2*pi),20*log10(abs(H)));grid; % abscisse en fréquence réelle

          Les instructions vpa(H) et digits(d) (par exemlpe d=4) sont utiles pour présenter le H(p) obtenu dans la fonction.