Forum: Digitale Signalverarbeitung / DSP / Machine Learning Notchfilter


von Thomas (Gast)


Lesenswert?

Hallo,
hat hier jemand schonmal einen 50Hz Notchfilter programmiert ??
Dann bitte ich um den Quellcode !

Danke, Thomas

von Yeah (Gast)


Lesenswert?

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);

von Alex (Gast)


Lesenswert?

[num,den] = iirnotch(w0,bw)

Ist kürzer :)

Ist dein Problem der Filterentwurf oder weißt du nicht, wie man eine
Differenzengleichung implementiert?

von Thomas (Gast)


Lesenswert?

nein, weiss ich nicht bzw hab ich noch nie gemacht !

ich werds mit YEAHs Version probieren ;)

Danke, Thomas

von Detlef A (Gast)


Lesenswert?

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

von Thomas (Gast)


Lesenswert?

@cheers ...ähh Detlef A: Danke ! Ich werd #2 nehmen, die ist am besten
denk ich !

Cheers, Thomas

von Notch-Filter-User (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.