mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Notchfilter


Autor: Thomas (Gast)
Datum:

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

Danke, Thomas

Autor: Yeah (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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);

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
[num,den] = iirnotch(w0,bw)

Ist kürzer :)

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

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nein, weiss ich nicht bzw hab ich noch nie gemacht !

ich werds mit YEAHs Version probieren ;)

Danke, Thomas

Autor: Detlef A (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas (Gast)
Datum:

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

Cheers, Thomas

Autor: Notch-Filter-User (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.