Hallo, hat hier jemand schonmal einen 50Hz Notchfilter programmiert ?? Dann bitte ich um den Quellcode ! Danke, Thomas
fs=1000;f1=60; w0=2*pi*f1/fs; r=cos(w0); i=sin(w0); r1=0.99*r; i1=0.99*i; b=conv([1 -r-i*i],[1 -r+i*i]); a=conv([1 -r1-i*i1],[1 -r+i*i1]); h=filter(b,a,ecg);
[num,den] = iirnotch(w0,bw) Ist kürzer :) Ist dein Problem der Filterentwurf oder weißt du nicht, wie man eine Differenzengleichung implementiert?
nein, weiss ich nicht bzw hab ich noch nie gemacht ! ich werds mit YEAHs Version probieren ;) Danke, Thomas
Hallo, lieber nicht mit YEAHs Version probieren, die ist etwas buggy. Entweder so: fs=1000;f1=50; w0=2*pi*f1/fs; r=cos(w0); i=sin(w0); r1=0.99*r; i1=0.99*i; j=sqrt(-1); b=conv([1 -r-j*i],[1 -r+j*i]); a=conv([1 -r1-j*i1],[1 -r+j*i1]); oder so (fs Samplingf., fn Notchf., r<1 'Breite' des Notch) fs=1000; fn=50; w=2*pi*fn/fs; j=sqrt(-1); r=0.9; b=poly([ exp(j*w) exp(-j*w)]) a=poly([r*exp(j*w) r*exp(-j*w)]) plot(20*log10(abs(freqz(b,a,fs/2)))) oder auch so (Matlab in Richtung C bis auf die Indizes) b1= -2*cos(w); a1= -r*2*cos(w); a2= r*r; n=1000; x=zeros(1,n); y=zeros(1,n); for(k=0:n-1) x(k+1)=sin(2*pi*k*fn/fs);end; z1=0;z2=0; for(k=0:n-1) r=a1*z1+a2*z2; y(k+1)=x(k+1)-r+b1*z1+z2; z2=z1; z1=x(k+1)-r; end; Cheers
@cheers ...ähh Detlef A: Danke ! Ich werd #2 nehmen, die ist am besten denk ich ! Cheers, Thomas
Hi Detlev, ich musste auch ein Notch-Filter entwerfen. Der Beispiel-Code ist sehr gut. Ich habe die Bandbreite und den Q-Faktor noch nicht verstanden, auch noch nicht von der Literatur. Meine Daten sind: fc=50Hz (Notch-Frequenz) fs=1kHz Kannst du uns das bitte erklären? Danke!
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.