Noob Geschrieben 5. April 2017 Melden Share Geschrieben 5. April 2017 Hallo zusammen, leider komme ich gerade nicht weiter. Ich habe 6 Variablen in einer Liste mit jeweils ca. 1500 Werten. Eine Spalte steht dabei für eine Variable. Jetzt würde ich gerne die Werte der Variablen unabhängig von einander sortieren. Als Beispiel: liste.tif Zahlen können durchaus öfters vorkommen. Die Daten liegen als float bereit. Danke! liste.tif Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 5. April 2017 Melden Share Geschrieben 5. April 2017 vor 4 Stunden schrieb Noob: Ich habe 6 Variablen in einer Liste mit jeweils ca. 1500 Werten. Das ist verdammt verwirrend. Heißt das, dass du eine Liste hast, die sechs Listen enthält, die ihrerseits wieder 1500 Elemente hat? In jedem Fall klingt das nach einer Liste von Listen, und diese enthaltenen Listen kannst du ganz normal sortieren lassen. Oder verstehe ich dich da falsch? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Noob Geschrieben 5. April 2017 Autor Melden Share Geschrieben 5. April 2017 sorry für dich Verwirrung. Im Endeffekt schaut meine Liste aus wie in liste.tif. Nur halt, dass ich X,Y,Z,A,B,C als Spalten habe. Jede dieser Spalten soll dann mit 1000 Werten gefüllt werden. Was ich generell vorhabe: Ich möchte von einem Sensor 3 rotatorische Freiheitsgrade (A,B,C) und 3 translatorische Freiheitgrade (X,Y,Z) auslesen und diese fortlaufend in einer Liste speichern. Anschließend sollen die Werte jeweils aufsteigend sortiert werden. Also alle Werte von A aufsteigend, alle von B aufsteigend, alle von C aufsteigend... Konkret mal ein Beispiel: X | Y | Z | A | B | C 3 | 1 | 4 | 10 | 27 | 20 5 | 2 | 7 | 13 | 90 | 30 ... Dabei ist meine Auffassung, dass dann meine Liste 6 Spalten und 2 Zeilen (den Kopf zähle ich nicht mit) hat. Oder habe ich ein falsches Verständnis von Listen in c#? Über eine Klasse kann ich ja eine Liste mit mehreren Parametern füllen: public class Entity : IComparable<Entity> { public float[] value = new float[6]; public Entity(float newValueX, float newValueY, float newValueZ, float newValueA, float newValueB, float newValueC) { value[0] = newValueX; value[1] = newValueY; value[2] = newValueZ; value[3] = newValueA; value[4] = newValueB; value[5] = newValueC; } //Hier müsste dann Methode zum Sortieren stehen public int CompareTo(Entity other) Mein Problem ist jetzt nur, dass ich nicht weiß wie die Comparsion aussehen muss, bzw. ob ich überhaupt die Spalten einer Liste unabhängig sortieren kann. Oder wäre es sinnvoll für jede einzelne Variable, als X,Y,Z, A,B,C eine eigene Liste zu generieren? Füllen würde ich sie dann so: void Listenfüller() { // So oft ausführen bis 2 Werte aufgenommen wurden while (i < 2) { //liste.Add(new Entity(getVar2.X2, getVar2.Y2, getVar2.Z2, getVar2.A2, getVar2.B2, getVar2.C2)); // Hier als Beispiel mit 2 Einträgen liste.Add(new Entity(7.7f, 4f, 9.9f, 10.0f, 11.1f, 12.2f)); liste.Add(new Entity(1.1f, 5.5f, 3.3f, 4.4f, 2.2f, 6.6f)); i++; return; } // Hier sollte die dann Liste sortiert werden liste.Sort(); } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 5. April 2017 Melden Share Geschrieben 5. April 2017 vor 11 Minuten schrieb Noob: Oder wäre es sinnvoll für jede einzelne Variable, als X,Y,Z, A,B,C eine eigene Liste zu generieren? Ja. Ob du da noch eine Klasse drumherum packst oder nicht, ist dir überlassen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Noob Geschrieben 5. April 2017 Autor Melden Share Geschrieben 5. April 2017 vor 2 Stunden schrieb Sascha: Ja. Ok Danke. Ich habs jetzt mal in einzelne Listen geschrieben. Allerdings ergibt das viele Wiederholungen die ich mir gerne ersparen würde: for ( int i = 0; i < 1000; i++) { listeX.Add(getVar2.X2); listeY.Add(getVar2.Y2); listeZ.Add(getVar2.Z2); listeA.Add(getVar2.A2); listeB.Add(getVar2.B2); listeC.Add(getVar2.C2); } // Listen sortieren listeX.Sort(); listeY.Sort(); listeZ.Sort(); listeA.Sort(); listeB.Sort(); listeC.Sort(); Da kommen noch etliche Aktionen die ich mit den Listen machen will. Ich habs mal, naiverweise, mit List<float[]> liste = new List<float[]>(); versucht und dann unten liste[j].Add(wert)... allerdings gibts Add nicht bei einem Array. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 5. April 2017 Melden Share Geschrieben 5. April 2017 Deine Lösung am Ende verfolgt die richtige Idee. Du kannst lauter Arrays oder Listen in ein Array oder eine Liste stopfen. Arrays sind dabei bei festen Größen sinnvoll, Listen, wenn die Anzahl der enthaltenen Elemente sich zur Laufzeit ändern kann. Eine Liste von Listen sieht dann so aus: List<List<float>> lists = new List<List<float>>(); Eine neue Liste kannst du dann so in die Liste einfügen: lists.Add(new List<float>()); und ein neues Element in die n-te Liste so: list[n].Add(item); Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.