Hallo!
Ich soll in Assembler einen Tiefpassfilter realisieren. Der Alogrithmus
oder viel mehr das Vorgehen ist mir vorgegeben:
1 | Die eigentliche Filteroperation entspricht der diskreten
|
2 | Faltung. Bei dieser Operation werden die Koeffizienten des Filters, die man sich als Maske
|
3 | vorstellen kann, an den in einem eindimensionalen Array aufgeführten Messwerten entlanggeschoben.
|
4 | Jedes Element der Messwerte, das von einem Maskenelement überdeckt wird, wird
|
5 | mit eben diesem Element multipliziert. Diese Operation wird f¨ur jedes Maskenelement ausgef
|
6 | ¨uhrt. Die einzelen Produkte werden dann aufsummiert und mit dem eventuell vorhandenen
|
7 | Skalierungsfaktor gewichtet. Das Ergebnis dieser Operation wird einem Ausgangselement (in
|
8 | der Datenstruktur als Element ’Center’ gekennzeichnet) zugeordnet. Daraufhin wird die Maske
|
9 | 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?