Hey Leute, ich bin gerade dabei die Sprungantwort für meinen Moving Average filter herzuleiten. Dies Versuche ich über die Z-transformierte. H(z)=1/M * (1-z^-M)/(1-z^-1), das 1/M lass ich im späteren Verlauf aber mal weg, weil es nur ein konstanter Faktor ist. Die Sprungantwort A(z) = H(z)*S(z); wobei S(z)=z/(z-1) der unit step ist Nun komme ich auf A(z)=(1-z^-M)/(1-2z^-1-z^-2) Um zurück in den Zeitbereich zu kommen versuche ich die Partialbruchzerlegung. Die Polstellen sind: z1=1+sqrt2=a und z2=1-sqrt2=b Zuvor musste ich aber Nenner und Zähler mit z^2 erweitern. Nun habe ich: A(z)=(z^2-z^(-M+2))/((z-a)*(z-b)) So und hier weiß ich nun nicht weiter... Könnte mir einer Grundsätzlich die Formel für die Sprungantwort im Zeitbereich für einen Moving Average sagen oder bei der weiteren Herleitung einen Tipp geben? Gruß Stefan
Grundsätzlich ist das bei einem Moving-Average ohne große Rechnung recht einfach: Du hast im Prinzip ein Rechteckfenster(Folge von M dirac-stoßen mit der Amplitude 1/M), welches du über dein Signal (hier: Sprungfunktion von 0 auf 1) verschiebst. In dem Bereich wo dein Eingangsignal 0 ist, ist auch dein Ausgangsignal 0. Nun kommt schließlich der Übergang wo der Sprung stattfindet. An der Stelle wo das erste Sample vom Sprung mit eingeht, mittelst du ja über M Werte die bis auf einen alle Null sind. Also ist das Ausgangssignal an dieser Stelle 1/M. An der nächsten Stelle gehen schon zwei Samples mit dem Wert 1 ein, d.h. 2/M. usw. Also: eine aufsteigende Treppe mit M-Stufen und ab dann konstant auf 1 Im Endeffekt: Sprungfunktion gefaltet mit einem Rechteckfester
Das macht auf jedenfall Sinn. Die Faltung im Zeitbereich entspricht ja der Multiplikation im Frequenzbereich. Ich schau mir das ganze nochmal genauer an und melde mich dann :) Gruß Stefan
Hm... der MA hat keine Pole. Du könntest zuerst die Differenzengleichung aufstellen und dann mit dem Verschiebungssatz z-transformen.
@ Matthias: Wenn ich zuerst die Differenzengleichung für meinen rekursiven MA aufstelle und dann in den z-Bereich transformiere, hab ich ja nur wieder meine Übertragungsfunktion im z-Bereich oder verstehe ich dich da falsch? Hab mal in Matlab versucht die Sprungantwort zu plotten. Da der Filter Kernel eine endliche Länge hat, sieht es wie ein Trapez aus. Ist das soweit richtig?
1 | % Step Response of CIC an MA |
2 | |
3 | % a(z)=(1-z^-M)/(1-2z^-z^-2) or in laplace: a(s)=(1/s)*(1-e^-sTM)/(1-e^-sT) |
4 | |
5 | clear all |
6 | close all |
7 | |
8 | f=ones(1,5000); |
9 | r=zeros(1,500); |
10 | s=[r,f]; %Step function |
11 | M=500; %Number of points |
12 | |
13 | % h=[zeros(1,length(r/2)),(1/M).*ones(1,length(M)),zeros(1,length(r/2))]; |
14 | |
15 | h=[(1/M).*ones(1,M)]; %Filter kernel or square window with the length M |
16 | |
17 | a=conv(s, h); %Convultion of step function with filter kernel |
18 | |
19 | v=length(h); |
20 | w=length(s); |
21 | x=0:1:(w+v)-2; %X-axis |
22 | |
23 | figure(1) |
24 | plot(x, a) %Plot of the convultion |
25 | axis([0 6000 -0.2 1.5]) |
26 | title('step response of recursive MA / CIC') |
27 | |
28 | figure(2) |
29 | subplot(1,2,1) %Plot of step function |
30 | plot(s) |
31 | axis([-500 6000 -0.1 1.5]) |
32 | title('step function') |
33 | |
34 | subplot(1,2,2) %plot of filter kernel |
35 | plot(h,'x') |
36 | title('recursive MA / CIC filter kernel') |
37 | axis([-50 550 -0.001 0.005]) |
Ich meinte, dass der MA eine andere H(z) hat. Im Zeitbereich geht die Sprungantwort einfacher auszurechnen als mit hin und her transformieren...
S(z)H(z)= 1/M * (1-z^-M)/(1-z^-1) * z/(z-1) = = (1/M * z^2 / (z-1)^2) - (1/M * z^-M * z^2/(z-1)^2) = = (1/M z * z/(z-1)^2) - (1/M * z^(-M+1) * z/(z-1)^2) z/(z-1)^2 <=> n*s[n] für |z|>1 => 1/M * (n+1) * s[n+1] - 1/M * (n-M+1) * s[n-M+1] lg Markus PS: Rechenfehler darf sich jeder selbst behalten :) PS2: S(z) <=> s[n] "union step"
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.