Forum: Digitale Signalverarbeitung / DSP / Machine Learning frequenzgang exponentieller mittelwertbildner


von Stefan W. (slev1n)


Lesenswert?

Hey Leute,

ich habe einen exponentiel gewichteten Mittelwertbildner (EWMA).

y[n]=alpha*x[n]+(1-alpha)*y[n-1]; H(z)=alpha/(1-(1-alpha)*z^-1)

Nun hätte ich das ganze gern in nichtkomplexer Form. Für den simplen 
moving average hab ich das bereits: |H(w)| = [sin(w*M/2)/M*sin(w/2)]

Ich suche quasi |H(w)| für den EWMA.

Vielen Dank im voraus.

Slev1n

von C Programmierer (Gast)


Lesenswert?

z=exp(j*2*pi*f/fs)=exp(j*omega/fs)

von Stefan W. (slev1n)


Lesenswert?

Danke für die Antwort, aber das wusste ich bereits davor schon. Ich 
möchte eine nicht-komplexe Darstellung des Frequenzgangs |H(w)|.

H(jw)=alpha/(1-(1-alpha)*e^-jw), wie  bekomme ich nun den komplexen Teil 
weg? e^-jw = cos(w)-j*sin(w)aber das hilft mir auch nicht viel weiter.

Gruß

Stefan

von derguteweka (Gast)


Lesenswert?

Stefan W. schrieb:
> wie  bekomme ich nun den komplexen Teil
> weg?

Manche behaupten ja, man koennte konjungiert komplex erweitern, dann 
nach Real- und Imaginaerteil aufspalten, diesen jeweils quadrieren, dann 
die Quadrate addieren und die Wurzel draus ziehen.
Aber vielleicht hilft ja auch, seinen Namen zu tanzen...

Gruss
WK

von Stefan W. (slev1n)


Angehängte Dateien:

Lesenswert?

so,
ja ich dacht mir schon, dass ich da nicht vorbeikomme. Ich hab mal ein 
Bild meiner Herleitung angehängt. Wäre froh um Rückmeldung. Vielleicht 
kann man noch was kürzen, oder ihr findet nen Fehler.

Eigentlich müsste man ab dem Schritt: Sqrt(Re²+Im²)nicht mehr von H(jw) 
sondern von |H(w)| sprechen...

Gruß

Stefan

von C Programmierer (Gast)


Lesenswert?

Du hast z=exp(j*omega) gesetzt. z ist aber exp(j*omega/fs). Du brauchst 
auch nicht mit dem konjugiert komplexen des Nenners erweitern, da 
betrag(a/b)=betrag(a)/betrag(b).

von Stefan W. (slev1n)


Lesenswert?

Ok,

wenn ich dich richtig verstanden habe, wäre deine Lösung wie folgt:

|H(w)|= c / sqrt(d²+(b*sin(w/fs))²); mit fs als Samplefrequenz

(Ein Schritt vor der Lösung: |H(w)|= |c| / |d-j*b*sin(w/fs)|)

Gruß

Stefan


EDIT: In meinem Bild ist ein Fehler! Nachdem ich ich den Bruch mit dem 
komplex konjugierten erweitere, habe ich vergessen das "c" mit dem 
Subtrahenden des Zählers zu multiplizieren!!!
Dann kann man den Term auch so kürzen, dass die in diesem Post 
beschriebene Lösung herauskommt!!!

: Bearbeitet durch User
von Stefan W. (slev1n)


Angehängte Dateien:

Lesenswert?

Ich habe "d" rück-substituiert und bin zu folgendem Ergebnis gekommen:

|H(w)|= alpha / sqrt(1²-2*1*(1-alpha)*cos(w/fs)+(1-alpha)²)

Habe diese Formel in Matlab mal geplottet und folgende Graphen erhalten:
(alpha = 0.5)

von derguteweka (Gast)


Lesenswert?

Moin,

Gut getanzt; ich denk' der Betragsfrequenzgang koennt' schon so passen.

Gruss
WK

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.