Gast
#253335
Hallo, hat hier jemand schonmal einen 50Hz Notchfilter programmiert ?? Dann bitte ich um den Quellcode ! Danke, Thomas
|
Anzeige
|
Notchfilter
Gast
#253335
Hallo, hat hier jemand schonmal einen 50Hz Notchfilter programmiert ?? Dann bitte ich um den Quellcode ! Danke, Thomas
Gast
#253336
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);
Gast
#253337
[num,den] = iirnotch(w0,bw) Ist kürzer :) Ist dein Problem der Filterentwurf oder weißt du nicht, wie man eine Differenzengleichung implementiert?
Gast
#253338
nein, weiss ich nicht bzw hab ich noch nie gemacht ! ich werds mit YEAHs Version probieren ;) Danke, Thomas
Gast
#253339
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
Gast
#253340
@cheers ...ähh Detlef A: Danke ! Ich werd #2 nehmen, die ist am besten denk ich ! Cheers, Thomas
Gast
#807065
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! Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|