Aller au contenu

Filtre elliptique/Modélisation sous MATLAB

Leçons de niveau 14
Une page de Wikiversité, la communauté pédagogique libre.
Début de la boite de navigation du chapitre
Modélisation sous MATLAB
Icône de la faculté
Chapitre no 2
Leçon : Filtre elliptique
Chap. préc. :Introduction
fin de la boite de navigation du chapitre
En raison de limitations techniques, la typographie souhaitable du titre, « Filtre elliptique : Modélisation sous MATLAB
Filtre elliptique/Modélisation sous MATLAB
 », n'a pu être restituée correctement ci-dessus.

Dans cet article est décrite une manière de concevoir un filtre passe-bande analogique à caractéristique elliptique (de Cauer) à l'aide de l'outil MATLAB et de le simuler. Le logiciel MATLAB nous permet de calculer rapidement les filtres partiels nécessaires à sa réalisation.

Cahier des charges

[modifier | modifier le wikicode]

Le gabarit de la figure 1 défini la réponse en fréquence de notre filtre. Il est sensé ne laisser passer que le bip de fréquence la plus élevée d'un signal radiophonique soit .

Figure 1: Gabarit de réalisation


Sur le gabarit nous avons les valeurs suivantes qui sont données :

Étant donnée que la fréquence centrale d’un passe bande se trouve au centre du gabarit, nous pouvons facilement à l’aide de la moyenne géométrique calculer les fréquences et .

Conception avec MATLAB

[modifier | modifier le wikicode]

Le programme MATLAB nous met à disposition tout un set de fonctions qui nous permettent de concevoir facilement notre filtre.

ellipord, ellip, zp2sos, zpk, bode, lsim, waveread, wavplay

Script de conception

[modifier | modifier le wikicode]

Ce script permet de calculer le filtre complet ainsi que les deux filtres d’ordre 2 qui le composent. De plus il affiche les diagrammes de bode des filtres partiels et de leur mise en cascade. Le script suivant n'a été testé que sous MATLAB 7.1

%*********************************************************************
%       CONCEPTION D'UN FILTRE ELLIPTIQUE                            *
%*********************************************************************
clear; clc;
close all;
%Definitions des paramètres du gabarit
fr=1250;
f1=1000;
f2=1220;
f3=fr^2/f2;
f4=fr^2/f1;
H0=0;
H1=-0.5;
H2=-40;

%Fréquences de stop et de pass
Wp=2*pi*[f2 f3];
Ws=2*pi*[f1 f4];
%Amplitudes des "vagues" ripples
Rp=abs(H1);
Rs=abs(H2);

%Détermine l’ordre du filtre ainsi que ses fréquences propres
[N, Wn] = ellipord(Wp, Ws, Rp, Rs, 's');
%Créée une matrice contenant les zéros, les poles et le gain du filtre 
[Z,P,K] = ellip(N, Rp, Rs, Wn, 's');
%Donne les coefficients des polynômes du numérateur et du dénumérateur 
[num, den] = ellip(N, Rp, Rs, Wn, 's');

%Matrice SOS contenant les coefficients de la forme standard de la fonction
% de transfert d'ordre 2 (selon Laplace). 
[SOS, G] = zp2sos(Z,P,K);

%Plotting complete filter
syst = ZPK(Z,P,K);
delta_f=1;
fmin=0;
fmax=10000;
%f=(fmin:delta_f:fmax); %linear frequency axis
f=logspace(0,4,10000); %logaritmic frequency axis
[Ampl, Phase] = bode(syst, 2*pi*f);
Ampl = squeeze(Ampl);

figure(1);
plot(f, 20*log10(Ampl+eps));
xlabel('Frequency [Hz]');
ylabel('Amplitude response [dB]');
grid on;

%Plotting 1st second-order section
[Z1,P1,K1]=sos2zp(SOS(1,1:6), G);
syst2=ZPK(Z1,P1,K1);
delta_f=1;
fmin=0;
fmax=10000;
%f=(fmin:delta_f:fmax); %linear frequency axis
f=logspace(0,4,10000); %logaritmic frequency axis
[Ampl, Phase] = bode(syst2, 2*pi*f);
Ampl = squeeze(Ampl);

figure(2);
plot(f, 20*log10(Ampl+eps));
xlabel('Frequency [Hz]');
ylabel('Amplitude response [dB]');
grid on;

%Plotting 2nd second-order section
[Z1,P1,K1]=sos2zp(SOS(2,1:6), 1);
syst2=ZPK(Z1,P1,K1);
delta_f=1;
fmin=0;
fmax=10000;
%f=(fmin:delta_f:fmax); %linear frequency axis
f=logspace(0,4,10000); %logaritmic frequency axis
[Ampl, Phase] = bode(syst2, 2*pi*f);
Ampl = squeeze(Ampl);

figure(3);
plot(f, 20*log10(Ampl+eps));
xlabel('Frequency [Hz]');
ylabel('Amplitude response [dB]');
grid on;

%Test with the sound
figure(4);
[bach,FS,NBITS,OPTS]=wavread('R:\Labos\SI\2321_Eln1\bach_bip_short.wav');
wavplay(bach, FS);
t=(0:length(bach)-1)/FS;
Y=lsim(syst,bach,t);
plot(Y);
sound(Y,FS);

Fonction de transfert

[modifier | modifier le wikicode]

La fonction de transfert d'un filtre de deuxième ordre oscillant est exprimée par rapport aux paramètres suivants :

  •  : Facteur de qualité des zéros
  •  : Facteur de qualité des pôles
  •  : Pulstation du zéro
  •  : Pulstation du pôle