Forum: Digitale Signalverarbeitung / DSP / Machine Learning Welchen Sortieralgorithmus verwenden?


von DSP-Anfänger (Gast)


Lesenswert?

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.

von Luther B. (luther-blissett)


Lesenswert?

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

von ElektronikFreak (Gast)


Lesenswert?

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

von Luther B. (luther-blissett)


Lesenswert?

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
Noch kein Account? Hier anmelden.