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.
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.
Mach ein struct mit Wert und Variablennamen. Dann Sortierst du nach den Werten im Struct und der variablenname bleibt erhalten...
1 | typedef struct{ |
2 | char name; |
3 | uint16 value; |
4 | } Koordinate; |
5 | |
6 | ...
|
7 | |
8 | ... fnc (...){ |
9 | // Variable anlegen
|
10 | Koordinate channelx, channely, channelz; |
11 | |
12 | // Werte zuweisen
|
13 | channelx.name = x; |
14 | channelx.value = get_Value(); |
15 | ...
|
16 | |
17 | //Sortieren wie auch immer
|
18 | if(channelx.name < wasauchimmer) |
19 | ersterwert = & channelx; |
20 | |
21 | // Frage nach dem namen
|
22 | werwarerster = ersterwert->name; |
23 | }
|
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
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. ;)
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.