Hauptinhalt

Die Übersetzung dieser Seite ist veraltet. Klicken Sie hier, um die neueste Version auf Englisch zu sehen.

Einen Filter mithilfe von „fdesign“ entwerfen

Entwerfen Sie mithilfe der beiden folgenden Schritte einen einfachen Filter.

  1. Erstellen Sie ein Filterspezifikationsobjekt.

  2. Entwerfen Sie Ihren Filter.

Beispiel 1. Einen Filter in zwei Schritten entwerfen

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 (Specificationfst1,fp1,fp2,fst2,ast1,ap,ast2). In diesem Beispiel wird fs als 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 Fstop1 sind 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, Fpass2 und Fstop2, verwenden Sie den Befehl set, 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)   
BandPassSpecObj ist 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 Funktion designmethods aufrufen. Beispielsweise können Sie in diesem Fall den folgenden Befehl ausführen:

>> designmethods(BandPassSpecObj)


Design Methods for class 
fdesign.bandpass (Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2):


butter
cheby1
cheby2
ellip
equiripple
kaiserwin
Nach dem Auswählen einer Entwurfsmethode können Sie Folgendes an der MATLAB-Eingabeaufforderung auswerten (in diesem Beispiel wird davon ausgegangen, dass Sie „equiripple“ ausgewählt haben):
>> BandPassFilt = design(BandPassSpecObj, 'equiripple')
 
BandPassFilt =
 
     FilterStructure: 'Direct-Form FIR'
          Arithmetic: 'double'         
           Numerator: [1x44 double]    
    PersistentMemory: false            
                      

Wenn 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:

>> 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 properties
 
Die für Filter-System objects verfügbaren Entwurfsmethoden und Entwurfsoptionen sind nicht unbedingt mit denen für die Filterobjekte identisch.

Hinweis

Wenn Sie keine Entwurfsmethode angeben, wird eine Standardmethode verwendet. Beispielsweise können Sie den folgenden Befehl ausführen:

>> BandPassFilt = design(BandPassSpecObj)
 
BandPassFilt =
 
     FilterStructure: 'Direct-Form FIR'
          Arithmetic: 'double'         
           Numerator: [1x44 double]    
    PersistentMemory: false
Die Entwurfsmethode wird dabei automatisch ausgewählt.

Zum Ü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:

>> fvtool(BandPassFilt) %plot the filter magnitude response
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.