WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Signal Processing Toolbox - Befehl sos2tf

 

DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 11.08.2012, 09:46     Titel: Signal Processing Toolbox - Befehl sos2tf
  Antworten mit Zitat      
Hallo Matlab Forum,

ich habe ein Problem bei der Umwandlung einer sosMatrix (second order section), welche von Matlab bei einem Filterdesign erstellt wird, in die Filterkoeffizienten b und a des Zähler- und Nennerpolynoms von H(z).

Das ist der Filterentwurf, wobei auch jedes andere IIR Filterdesign gewählt werden kann. Dies ist irrelevant bei meinem Problem.

Code:

% All frequency values are in Hz.
Fs = 20000;  % Sampling Frequency

Fpass = 2000;        % Passband Frequency
Fstop = 2800;       % Stopband Frequency
Apass = 1;           % Passband Ripple (dB)
Astop = 30;          % Stopband Attenuation (dB)
match = 'stopband';  % Band to match exactly

% Construct an FDESIGN object and call its BUTTER method.
h  = fdesign.lowpass(Fpass, Fstop, Apass, Astop, Fs);
Hd = butter(h, 'MatchExactly', match);
 


Hier die Umwandlung von der sos Matrix zu den Filterkoeffizienten

Code:
[b,a] = sos2tf(Hd.sosMatrix);
 


Hiermit erstelle ich die Frequenzantwort des Filters...
Code:
fvtool(b,a)
fvtool(Hd)


Hier zeigt sich nun bei der ersten Variante eine sehr hohe Verstärkung (über 130 dB) im Durchlassbereich. Mit dem Filterobjekt Hd erhalte ich die erwartete Verstärkung in diesem Bereich von 1.

Wenn ich mir statt der Koeff. a und b die Null-, Polstellen und Verstärkung des Filters ausgeben lasse mit...

Code:
[z,p,k] = sos2zp(sos)
[b,a] = zp2tf(z,p,k)


ist k wiederum 1. Allerdings ist die nachfolgende Umwandlung zur Transferfunction auch wieder falsch, da sich wieder die hohe Verstärkung in derFilter-Frequenzantwort zeigt.

Man kann bei sos2tf(sosMatrix,g) auch noch einen Verstärkungsfaktor (g = gain) mit übergeben. Leider konnte ich damit die Verstärkung auch nicht auf 1 absenken.


Kann mir jemand erklären, wie ich aus dem Filterobjekt Hd nun die richtigen Koeffizienten erhalte?

Vielen Dank schon mal für nützliche Hinweise.
Private Nachricht senden Benutzer-Profile anzeigen


Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.