Hauptinhalt

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

Filter aus Filter Designer exportieren

Die App Filter Designer bietet eine einfache Möglichkeit, Filterobjekte (dfilt) aus Ihren Filterentwürfen zu erstellen. Dies ist vor allem hilfreich, wenn Sie Ihren Filterentwurf im MATLAB®-Arbeitsbereich speichern möchten, um ihn mit Befehlszeilenfunktionen verwenden zu können. Sie können Ihre Filter auch als MATLAB-Programmcode speichern, indem Sie File > Generate MATLAB code auswählen, um die Ausführung in Skripts oder Stapeldateien zu ermöglichen.

  1. Klicken Sie in Filter Designer auf Filter Manager und heben Sie nur den Filter Bandpass Butterworth-1 hervor.

  2. Wählen Sie File > Export aus.

  3. Legen Sie Export to auf Workspace fest. Legen Sie Export as auf Objects fest. Geben Sie in das Feld Discrete Filter die Zeichenfolge Hd1 ein. Klicken Sie auf Export, um den ersten Filter in Ihrer Filterbank in ein Hd1 dfilt-Objekt im Arbeitsbereich zu exportieren.

  4. Wiederholen Sie die Schritte 1 bis 3 für die verbleibenden neun Filter. Heben Sie jeden Filter einzeln hervor, um ihn als aktiven Filter festzulegen, und passen Sie den Namen Discrete Filter an die Filternummer an. Am Ende wird der Arbeitsbereich 10 dfilt-Objekte enthalten.

  5. Schließen Sie die App, indem Sie File > Close auswählen.

  6. Überprüfen Sie in der MATLAB-Befehlszeile mithilfe des Befehls whos, ob Ihre Objekte exportiert wurden.

    whos
      Name      Size            Bytes  Class           Attributes
    
      Hd1       1x1                    dfilt.df2sos              
      Hd10      1x1                    dfilt.df2sos              
      Hd2       1x1                    dfilt.df2sos              
      Hd3       1x1                    dfilt.df2sos              
      Hd4       1x1                    dfilt.df2sos              
      Hd5       1x1                    dfilt.df2sos              
      Hd6       1x1                    dfilt.df2sos              
      Hd7       1x1                    dfilt.df2sos              
      Hd8       1x1                    dfilt.df2sos              
      Hd9       1x1                    dfilt.df2sos  

Filterung mit „dfilt“

  1. Geben Sie Folgendes in die MATLAB-Befehlszeile ein, um die Filterobjekte Ihrer Filterbank zu einem einzigen dfilt-Objekt zu verketten.

    Hd = [Hd1 Hd2 Hd3 Hd4 Hd5 Hd6 Hd7 Hd8 Hd9 Hd10];
    
  2. Zum Anzeigen des ersten Filters geben Sie Hd(1) ein.

    Hd(1)
     
    ans =
     FilterStructure: 'Direct-Form II, Second-Order Sections'
           sosMatrix: [3x6 double]  
         ScaleValues: [3.40097054256801e-009;1;1;1]
    PersistentMemory: false
    
  3. Es gibt verschiedene Möglichkeiten, das Hd1 dfilt-Objekt anzuzeigen und zu bearbeiten. Versuchen Sie es mit dem Befehl info:

    info(Hd1)           % Displays filter information
    
    Discrete-Time IIR Filter (real)                            
    -------------------------------                            
    Filter Structure    : Direct-Form II, Second-Order Sections
    Number of Sections  : 3                                    
    Stable              : Yes                                  
    Linear Phase        : No   
  4. Sie können „FVTool“ von der MATLAB-Befehlszeile aus öffnen und die Anzeigeparameter wie folgt angeben.

    F = fvtool(Hd,'Analysis','magnitude')   % Open FVTool with 
                                            % magnitude display
    set(F,'FrequencyScale','Log')           % Change to log scale
    

    Diese Vorgehensweise führt zur selben Anzeige wie in Schritt 5 im Abschnitt Filter in „FVTool“ anzeigen.

  5. Erstellen Sie jetzt mithilfe der MATLAB-Befehlszeile einige Daten für diskretes weißes Gauß‘sches Rauschen, die Sie dann mithilfe der Filterbank filtern können.

    rand;                   % Initialize random number generator
    Nx = 100000;            % Number of noise data points
    xw = randn(Nx,1);       % Create white noise
    for i=1:10,
      yw(:,i)=filter(Hd(i),xw); % Filter the white noise through
    end                         % the entire filter bank.
                                % (:,i) means all rows of column i
  6. Plotten Sie die gefilterten Daten.

    plot(yw)