Einen Filter mithilfe von „fdesign“ entwerfen
Entwerfen Sie mithilfe der beiden folgenden Schritte einen einfachen Filter.
Erstellen Sie ein Filterspezifikationsobjekt.
Entwerfen Sie Ihren Filter.
Angenommen, Sie möchten einen Bandpassfilter entwerfen. In der Regel ist ein Bandpassfilter wie in der folgenden Abbildung definiert.

In diesem Beispiel wird eine Abtastfrequenz von Fs = 48 kHz verwendet. Dieser Bandpassfilter weist die folgenden Spezifikationen auf, die hier mithilfe von MATLAB®-Programmcode angegeben wurden:
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
In den beiden folgenden Schritten werden diese Spezifikationen als Parameter an die Methode fdesign.bandpass weitergeleitet.
- Schritt 1
Zum Erstellen eines Filterspezifikationsobjekts werten Sie den folgenden Code an der MATLAB-Eingabeaufforderung aus:
d = fdesign.bandpass
Leiten Sie jetzt die Filterspezifikationen weiter, die der Standardspezifikation entsprechen (
Specification–fst1,fp1,fp2,fst2,ast1,ap,ast2). In diesem Beispiel wirdfsals letztes Eingabeargument hinzugefügt, um die Abtastfrequenz von 48 kHz anzugeben.>> 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)Hinweis
Die Filterordnung ist nicht angegeben, sodass eine gewisse Freiheit beim Algorithmusentwurf besteht, um die Spezifikation zu erreichen. Der Entwurf wird ein Entwurf mit minimaler Ordnung sein.
Die Spezifikationsparameter wie
Fstop1sind ausnahmslos Standardwerte, sofern keine Werte angegeben werden. Sie können die Werte der Spezifikationsparameter ändern, nachdem das Filterspezifikationsobjekt erstellt wurde. Wenn beispielsweise zwei Werte geändert werden müssen,Fpass2undFstop2, verwenden Sie den Befehlset, mit dem zunächst das Objekt und dann die Parameterwertepaare übernommen werden. Werten Sie den folgenden Code an der MATLAB-Eingabeaufforderung aus:>> set(BandPassSpecObj, 'Fpass2', 15800, 'Fstop2', 18400)
BandPassSpecObjist das neue Filterspezifikationsobjekt, das alle erforderlichen Entwurfsparameter, einschließlich des Filtertyps, enthält.Sie können auch die Parameterwerte in den Filterspezifikationsobjekten ändern, indem Sie auf diese wie auf Elemente in einem
struct-Array zugreifen.>> BandPassSpecObj.Fpass2=15800;
- Schritt 2
Entwerfen Sie den Filter mithilfe des Befehls
design. Sie können auf die Entwurfsmethoden zugreifen, die für Ihr Spezifikationsobjekt verfügbar sind, indem Sie die Funktiondesignmethodsaufrufen. Beispielsweise können Sie in diesem Fall den folgenden Befehl ausführen:Nach dem Auswählen einer Entwurfsmethode können Sie Folgendes an der MATLAB-Eingabeaufforderung auswerten (in diesem Beispiel wird davon ausgegangen, dass Sie „>> designmethods(BandPassSpecObj) Design Methods for class fdesign.bandpass (Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2): butter cheby1 cheby2 ellip equiripple kaiserwin
equiripple“ ausgewählt haben):>> BandPassFilt = design(BandPassSpecObj, 'equiripple') BandPassFilt = FilterStructure: 'Direct-Form FIR' Arithmetic: 'double' Numerator: [1x44 double] PersistentMemory: falseWenn Sie die DSP System Toolbox™ installiert haben, können Sie Ihren Filter auch mit einem Filter-System object™ entwerfen. Wenn Sie ein Filter-System object mit demselben
BandPassSpecObj-Spezifikationsobjekt entwerfen möchten, können Sie die folgenden Befehle ausführen:Die für Filter-System objects verfügbaren Entwurfsmethoden und Entwurfsoptionen sind nicht unbedingt mit denen für die Filterobjekte identisch.>> 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 propertiesHinweis
Wenn Sie keine Entwurfsmethode angeben, wird eine Standardmethode verwendet. Beispielsweise können Sie den folgenden Befehl ausführen:
Die Entwurfsmethode wird dabei automatisch ausgewählt.>> BandPassFilt = design(BandPassSpecObj) BandPassFilt = FilterStructure: 'Direct-Form FIR' Arithmetic: 'double' Numerator: [1x44 double] PersistentMemory: falseZum Überprüfen Ihrer Arbeit können Sie die Größenantwort des Filters mithilfe des Filter Visualization Tool plotten. Überprüfen Sie, ob alle Entwurfsparameter erfüllt sind:
Wenn die DSP System Toolbox installiert ist, erstellt das Filter Visualization Tool die folgende Abbildung, in der die gestrichelten roten Linien die Übergangsbänder und die Einsverstärkung (0 in dB) über das Durchlassband angeben.>> fvtool(BandPassFilt) %plot the filter magnitude response
