Hallo, ich habe ein Sensor-IC im Einsatz, das über einen dedizierten 48bit-DSP verfügt. Dieser wird in Assembler programmiert, eine andere Entwicklungsumgebung steht nicht zur Verfügung, aber das ist auch nicht weiter tragisch. Die Sensordaten liegen in 48bit breiten Registern und ich möchte diese nun gern im DSP filtern. Dazu habe ich an ein Median-Filter gedacht. Dafür gibt es ja die verschiedensten Implementierungen, doch welche ist für mich die geeignetste? Quick Sort? Bubble Sort? Die Filterung soll irgendwo zwischen 3 und 9 Werten liegen. Könnt ihr mir bei der Wahl helfen? Dank euch.
Für die Berechnung des Medians muss man nicht alles sortieren, man kann einfachere Algorithmen verwenden, die gezielt das Element suchen. Das Analog zu Quicksort ist in diesem Bereich Quickselect: http://en.wikipedia.org/wiki/Quickselect
Bei 3 Werten brauchst du keinen Sortieralgorithmus, das geht per Fallunterscheidung. Die Laufzeitkomplexität von Quicksort ist zwar für große Mengen besser (nlog(n)), das lohnt sich aber für diese Fälle nicht, da die Vorbereitungsarbeit (Einsinken) zu lange dauert. Ich würde Shellsort nehmen: http://de.wikipedia.org/wiki/Shellsort
ElektronikFreak schrieb: > Bei 3 Werten brauchst du keinen Sortieralgorithmus, das geht per > Fallunterscheidung. > Die Laufzeitkomplexität von Quicksort ist zwar für große Mengen besser > (nlog(n)), das lohnt sich aber für diese Fälle nicht, da die > Vorbereitungsarbeit (Einsinken) zu lange dauert. Ich würde Shellsort > nehmen: http://de.wikipedia.org/wiki/Shellsort Ich habe schon darauf hingewiesen, dass man gar nicht sortieren muss. Shellsort ist massiv schlechter als ein Selection Algorithmus. Falls deine Filtergrößen tatsächlich überschaubar gross (3-9) sind, dann kannst du dir z.B. mit diesem Perl Modul ein spezielles Sorting Network erstellen lassen, welches nur den Median bestimmt: http://search.cpan.org/~fractal/Algorithm-Networksort-Chooser-0.100/bin/algorithm-networksort-chooser
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.