Concevoir un filtre avec fdesign
Concevez un filtre simple en effectuant les deux étapes suivantes.
Créez un objet de spécification de filtre.
Concevez votre filtre.
Supposez que vous vouliez concevoir un filtre passe-bande. De manière générale, un filtre passe-bande est défini comme le montre la figure suivante.

Cet exemple utilise une fréquence d’échantillonnage de Fs = 48 kHz. Ce filtre passe-bande a les spécifications suivantes, définies ici en utilisant le code MATLAB® :
A_stop1 = 60; % Attenuation in the first stopband = 60 dB F_stop1 = 8400; % Edge of the stopband = 8400 Hz F_pass1 = 10800; % Edge of the passband = 10800 Hz F_pass2 = 15600; % Closing edge of the passband = 15600 Hz F_stop2 = 18000; % Edge of the second stopband = 18000 Hz A_stop2 = 60; % Attenuation in the second stopband = 60 dB A_pass = 1; % Amount of ripple allowed in the passband = 1 dB
Dans les deux étapes suivantes, ces spécifications sont transmises vers la méthode fdesign.bandpass en tant que paramètres.
- Étape n° 1
Pour créer un objet de spécification de filtre, évaluez le code suivant à l’invite MATLAB :
d = fdesign.bandpass
Transférez ensuite les spécifications du filtre qui correspondent aux spécifications par défaut :
Specification—fst1,fp1,fp2,fst2,ast1,ap,ast2. Cet exemple ajoutefscomme argument d’entrée final pour spécifier la fréquence d’échantillonnage de 48 kHz.>> BandPassSpecObj = ... fdesign.bandpass('Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2', ... F_stop1, F_pass1, F_pass2, F_stop2, A_stop1, A_pass, ... A_stop2, 48000)Remarque
L’ordre du filtre n'est pas spécifié, ce qui permet un degré de liberté pour le design de l'algorithme afin de réaliser les spécifications. Le design sera d’ordre minimal.
Les paramètres de spécification, tels que
Fstop1, prennent tous une valeur par défaut si aucune valeur ne leur a été attribuée. Vous pourrez modifier les valeurs des paramètres de spécification une fois que l’objet de spécification du filtre aura été créé. Par exemple, si vous devez modifier deux valeurs,Fpass2etFstop2, utilisez la commandeset, qui prend d’abord en entrée l’objet, puis les paires de valeurs des paramètres. Évaluez le code suivant à l’invite MATLAB :>> set(BandPassSpecObj, 'Fpass2', 15800, 'Fstop2', 18400)
BandPassSpecObjest le nouvel objet de spécification, qui contient l'ensemble des paramètres de design requis, y compris le type de filtre.Vous pouvez également modifier les valeurs des paramètres dans les objets de spécification des filtres en y accédant comme s’il s’agissait d’éléments dans un
structarray.>> BandPassSpecObj.Fpass2=15800;
- Étape n° 2
Concevez le filtre à l'aide de la commande
design. Vous pouvez accéder aux méthodes de design disponibles pour votre objet de spécification en appelant la fonctiondesignmethods. Par exemple, dans ce cas, vous pouvez exécuter la commandeAprès avoir choisi une méthode de design, vous pouvez évaluer ce qui suit à l’invite MATLAB (cet exemple suppose que vous avez choisi '>> designmethods(BandPassSpecObj) Design Methods for class fdesign.bandpass (Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2): butter cheby1 cheby2 ellip equiripple kaiserwin
equiripple') :>> BandPassFilt = design(BandPassSpecObj, 'equiripple') BandPassFilt = FilterStructure: 'Direct-Form FIR' Arithmetic: 'double' Numerator: [1x44 double] PersistentMemory: falseSi DSP System Toolbox™ est installé, vous pouvez également concevoir votre filtre avec un System object™ de filtre. Pour créer un System object de filtre ayant le même objet de spécification
BandPassSpecObj, vous pouvez exécuter les commandesLes méthodes et les options de design disponibles pour les System objects de filtre ne sont pas forcément les mêmes que celles des objets de filtre.>> designmethods(BandPassSpecObj,... 'SystemObject',true) Design Methods that support System objects for class fdesign.bandpass (Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2): butter cheby1 cheby2 ellip equiripple kaiserwin >> BandPassFiltSysObj = design(BandPassSpecObj,... 'equiripple','SystemObject',true) System: dsp.FIRFilter Properties: Structure: 'Direct form' NumeratorSource: 'Property' Numerator: [1x44 double] InitialConditions: 0 FrameBasedProcessing: true Show fixed-point propertiesRemarque
Si vous ne spécifiez pas une méthode de design donnée, une méthode par défaut sera utilisée. Par exemple, vous pouvez exécuter la commande
et une méthode de design sera sélectionnée automatiquement.>> BandPassFilt = design(BandPassSpecObj) BandPassFilt = FilterStructure: 'Direct-Form FIR' Arithmetic: 'double' Numerator: [1x44 double] PersistentMemory: false