www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Gaußfilter(Tiefpassfilter) - Kann Vorgehen nicht nachvollziehen.


Autor: gruml gruml (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich soll in Assembler einen Tiefpassfilter realisieren. Der Alogrithmus 
oder viel mehr das Vorgehen ist mir vorgegeben:


Die eigentliche Filteroperation entspricht der diskreten
Faltung. Bei dieser Operation werden die Koeffizienten des Filters, die man sich als Maske
vorstellen kann, an den in einem eindimensionalen Array aufgeführten Messwerten entlanggeschoben.
Jedes Element der Messwerte, das von einem Maskenelement überdeckt wird, wird
mit eben diesem Element multipliziert. Diese Operation wird f¨ur jedes Maskenelement ausgef
¨uhrt. Die einzelen Produkte werden dann aufsummiert und mit dem eventuell vorhandenen
Skalierungsfaktor gewichtet. Das Ergebnis dieser Operation wird einem Ausgangselement (in
der Datenstruktur als Element ’Center’ gekennzeichnet) zugeordnet. Daraufhin wird die Maske
um eine Position weiter geschoben und die ganze Prozedur beginnt von neuem."


Allerdings habe ich arge Probleme damit.
Was zB meint?:

"Jedes Element der Messwerte, das von einem Maskenelement überdeckt 
wird, wird mit eben diesem Element multipliziert."

Angenommen, meine Messwerte wären 1,2,3,4,5,6,7 und meine Maske 4. Wie 
genau soll nun 4 eines der Messwerte überdecken?



Oder hier:

"Das Ergebnis dieser Operation wird einem Ausgangselement (in
der Datenstruktur als Element ’Center’ gekennzeichnet) zugeordnet."

Center ist im C-Programm ein int und wird an das Asm-Unterprogramm 
übergeben.
Wenn ich jede Summe nun in Center schiebe, dann überschreibe ich doch 
einfach den vorigen Wert.


Wüßte da einer Rat?

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das klingt nach einer ziemlich umständlichen Beschreibung eines 
FIR-Filters. Lies mal die Application note AVR223 durch:
http://www.atmel.com/dyn/resources/prod_documents/...
"AVR223: Digital Filters with AVR" dazu gibts noch gezippte Quelltexte 
in AVR-Assembler

Autor: Jan Bruns (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, halt für jedes Ausgabeelement die Summe bilden aus den Produkten 
des zugehörigen Eingabelements mit der maskenmitte, bzw. der Nachbarn 
mit den passenden Maskenstellen.


Ausgabe[i] := SUMME( Maske[j]*Eingabe[i+j], j=-n..n )

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.