www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Messwerte sortieren


Autor: Rüdiger B. (fenris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

irgendwie stehe ich gerade voll auf dem Schlauch.
Ich habe 3 Messwerte, channelx, channely und channelz (Wertebereich: 
-4000 bis +4000). Diese Werte würde ich gerne der Größe nach sortieren.
Das ganze soll nach Möglichkeit ohne implementierung komplexer 
Sortieralgorithmen gehen, sind ja nur die drei Werte.
Mein eigentliches Problem ist folgendes:

Wenn ich drei Messwerte sortiere, dann anhand ihrer Werte. Als Ergebnis 
bekomme ich die Werte in geordneter Reihenfolge, aber woher habe ich 
denn die Zuordnung zwischen Wert und Variablennamen. Schwer Auszudrücken 
irgendwie, ein Beispiel:
x = 1, y = 7, z = 3
Diese Werte schreibe ich z.B. in ein Array. Dann vergleiche ich und 
sortier die um, krieg ich wohl noch hin, aber wenn ich am ende eine 
Liste von 1, 3, 7 erhalte, wie weiss ich dann welcher Wert zu welcher 
Variable gehört?

Ich hoffe jemand entfernt mal das Brett von meinem Kopf.

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du machst aus deiner n x 3 Matrix eine 3n x 2 Matrix. In der ersten 
Spalte stehen nur die Symbole 'x','y','z' in der zweiten deine 
Messwerte. Dass du insgesamt mehr Sepicher brauchst, nimmst du in kauf.

Autor: Bertram S. (bschall)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mach ein struct mit Wert und Variablennamen.
Dann Sortierst du nach den Werten im Struct und der variablenname bleibt 
erhalten...
typedef struct{
  char name;
  uint16 value;
} Koordinate;

...

... fnc (...){
// Variable anlegen
Koordinate channelx, channely, channelz;

// Werte zuweisen
channelx.name = x;
channelx.value = get_Value();
...

//Sortieren wie auch immer
if(channelx.name < wasauchimmer)
  ersterwert = & channelx;

// Frage nach dem namen
werwarerster = ersterwert->name;
}

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du machst IMHO einen Denkfehler, wenn du die Werte verschiedener 
Messkanäle untereinander ("iese Werte schreibe ich z.B. in ein Array") 
sortierst. Ich würde mehrere Arrays benutzen und nur die Werte eines 
Messkanals sortieren und dann die anderen Werte "mitziehen"

Unsortiert:

Index Messung    channelx channely channelz
0        1           1        7        3
1        2           0        5        8
2        3           3        10       2

Sortiert z.B. nach channelx:

Index Messung    channelx channely channelz
0        2           0        5        8
1        1           1        7        3
2        3           3        10       2

Autor: Rüdiger B. (fenris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hui, danke für die schnellen Antworten schonmal.

Erstmal zu Stefan: Das Problem ist, dass ich erstmal nur eine Messung 
habe. Die Daten werden sortiert, verarbeitet, regeln etwas und 
anschliessend gibts dann viel später eine neue Messung.

Zu Bertram: Die Idee mit dem struct gefällt mir sehr gut, zumal die 
ganze SAche nach hinten raus auch noch komplizierter wird. Abhängig vom 
Vorzeichen des Wertes werden u.a auch noch unterschiedliche Kanäle 
angesteuert usw. Alles Informationen die sich in einer solchen Struktur 
gut mit einbauen lassen.

Ich hab die mIttagspause nun erstmal zu denken, mahlzeit. ;)

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.