Ich habe eine Tabelle in Matlab, die Testdaten von verschiedenen Testpersonen enthält. Der Test besteht aus sieben Videoclips mit jeweils vier verschiedenen Audioversionen, die die Testpersonen auf einer Skala von 1 bis 100 bewerten müssen. Jeder Videoclip wird zur statistischen Genauigkeit zweimal dargestellt. Die Testperson drückt die Tasten 1-4 an einer Schnittstelle, um die verschiedenen Audioversionen zu hören.Wie sortiere ich Teile der Tabelle in Matlab?
Meine Tabelle enthält die folgenden Spalten (unter einigen anderen, die nicht relevant für die Frage sind):
Test Person ID Audio Version Video Clip Rating
1 1 Forest 40
1 2 Forest 60
1 3 Forest 20
1 4 Forest 100
nun während des Tests, die Audio-Versionen minimale Tendenz zu jeder für eine bestimmte Schaltfläche einführen werden zufällig zwischen jedem Videoclip permutiert. Dies bedeutet, dass die realen Daten wie diese etwas aussehen wird (Audio-Version nicht sortiert):
Test Person ID Audio Version Video Clip Rating
1 1 Forest 40
1 2 Forest 60
1 3 Forest 20
1 4 Forest 100
1 3 City 10
1 2 City 50
1 1 City 40
1 4 City 7
1 4 Inside 90
1 2 Inside 58
1 1 Inside 22
1 3 Inside 35
Was ich tun möchte, ist: die richtige Reihenfolge der Videoclips zu pflegen, so haben nach wie vor Wald -> Stadt -> Innen, aber haben sie alle bestellt, so dass immer Audio ist Version 1, 2, 3, 4:
Test Person ID Audio Version Video Clip Rating
1 1 Forest 40
1 2 Forest 60
1 3 Forest 20
1 4 Forest 100
1 1 City 40
1 2 City 50
1 3 City 10
1 4 City 7
1 1 Inside 22
1 2 Inside 58
1 3 Inside 35
1 4 Inside 90
Mein erster Gedanke war, die sortrow()
Funktion in Matlab zu verwenden und diese dann sortiert aufsteigend zusammen mit der Videoclip, aber da die Videoclips zweimal in verschiedenen Phasen des Tests eingeführt werden und ich beibehalten möchte Die gleiche Sequenz der Clips in der Tabelle funktioniert nicht. Auch die gleichen Videoclips werden vielen verschiedenen Testpersonen präsentiert.
Ich verwende eine vorgefertigte Funktion, bei der die Daten auf diese Weise sortiert werden müssen, um statistische Berechnungen durchzuführen. Diese Funktion übernimmt die Matlab-Daten aus einer Struktur und legt sie über eine For-Loop-Zeile für die Zeile in die Tabelle.
Da die Daten über eine for-Schleife in die Tabelle geschrieben werden, dachte ich, es könnte nur eine eine feste Anzahl von Zeilen zu sortieren dh Zeile 1-4, 5-8, 9-12 und so weiter. Wissen Sie, ob es eine Möglichkeit gibt, nur einen Teil einer Tabelle in Matlab zu sortieren?
Vielen Dank für Ihre Antworten. Ich bekomme die erwartete Ausgabe von idx, d. H. Eine Menge von 4 Zeilenspalten, die die Indizes von 1-4 gemäß der Reihenfolge in meiner Tabelle enthalten. Ich verstehe die zweite Zeile jedoch nicht vollständig mit "idxtble". Wenn ich versuche, die Zeile auszuführen, heißt es: "Nicht-Singleton-Dimensionen der beiden Eingabe-Arrays müssen übereinstimmen". Ich entfernte das Inkrement von vier und änderte so die Zeile zu 'idxtble = bsxfun (@plus, idx, 0: 4: Größe (idx, 2) -1); '(was ich denke, war deine ursprüngliche Antwort), aber wenn ich es tue dass ich bei table2 einen einzelnen numerischen Wert habe. – matiastofteby
@matiastoftby Sorry für die späte Antwort. Sie sind richtig.Anfrage aktualisiert. – rahnema1
Vielen Dank! Die aktualisierte Version funktionierte genau so, wie ich es mir erhofft hatte. Ich habe deine Antwort jetzt akzeptiert. Ich wünsche ihnen einen wunderbaren Tag. – matiastofteby