Verfasst am: 02.11.2011, 15:46
Titel: Variable im Struct finden und Position anpassen
Hallo zusammen,
um meine Messdaten in eine GUI einlesen zu können, ist es erforderlich, dass bestimmte Variablen in ihrem Namen angepasst werden. Ich habe dazu ein Skript geschrieben, welche die entsprechenden Variablen selektiert und umbenennt. Folgendes Problem tritt auf: Aufgrund von kamerabasierten Daten, die manchmal nur teilweise aufgezeichnet wurden, kann es sein, dass die Positionen der anzupassenden Variablen (hier: Geschwindigkeit des Ego-Fzgs und dessen Radgeschwindigkeiten) sich innerhalb der Matrix verändern.
Code:
[filename, pathname] = uigetfile('*.mat', 'Select a MATLAB code file','MultiSelect','on');
Das heißt, die Positionen in der struct_var ändern sich, wenn ich mehrere Files gleichzeitig bearbeiten möchte, zudem ändert sich natürlich auch die Zeitvariable, z.B. '..._t114' . Die ursprüngliche Matrix hat 822 Zeilen und die Geschwindigkeiten kommen erst ziemlich spät. Gibt es eine Möglichkeit die fünf Geschwindigkeiten UND deren zwei Zeiten (für alle 4 Räder gleich + Egofzg) in ihrer Position innerhalb des Structs zu verändern, sodass die Positionen in der struct_var z.B. 1,2,3,4 und 5 für die Geschwindigkeiten und 6 und 7 für die Zeiten lauten? Vielen Dank für Eure Hilfe!!
Dazu musst du aber trotzdem noch wissen, an welcher Stelle die relevanten Einträge ursprünglich stehen, was dir vermutlich erstmal nicht weiterhilft.
Wenn du weißt, welche Feldnamen du brauchst, kannst du sie vielleicht direkt verwenden, anstatt sie aus struct_var auszulesen?
Bei Daten dieser Komplexität empfehle ich dringend, sich vorher zu überlegen, wie man sie verwenden will, und sie möglichst übersichtlich zu speichern.
Zitat:
zudem ändert sich natürlich auch die Zeitvariable, z.B. '..._t114'
Zitat:
zudem ändert sich natürlich auch die Zeitvariable, z.B. '..._t114'
Ich verstehe nicht, was du damit sagen willst.
Die Kamera meines Messfahrzeugs kann bis zu 8 Objekte detektieren und aufzeichnen. Werden, wie in meinem Fall, nur 7 Objekte erkannt, fallen alle weiteren Parameter, die das 8. Objekt betreffen, weg. Dementsprechend sinkt die Anzahl der aufgezeichneten Parameter, dementsprechend sinkt auch die Anzahl der aufgezeichneten Zeitparameter. Bei 8 detektierten Objekten gibt es 117 Zeitparameter.
Zitat:
Wenn du weißt, welche Feldnamen du brauchst, kannst du sie vielleicht direkt verwenden, anstatt sie aus struct_var auszulesen?
Ja, die Namen sind mir bekannt, allerdings wird der Name immer mit dem zugeordneten Zeitparameter versehen, welcher ja leider variabel ist.
Ich würde das Problem nun mit einer if-else Bedingung lösen (für jede Anzahl der detektierten Objekte), weiß aber den korrekten Syntax für die Bedingung nicht. Mein Ziel: Wenn das array an der Stelle {785,1} den Inhalt t110 hat, dann..., sonst....
Code:
[filename, pathname] = uigetfile('*.mat', 'Select a MATLAB code file','MultiSelect','on');
Ja, die Namen sind mir bekannt, allerdings wird der Name immer mit dem zugeordneten Zeitparameter versehen, welcher ja leider variabel ist.
Wenn ich das richtig verstehe, werden Tags wie '_t114' an die Namen der Felder gehängt. Es ist immer unpraktisch, Index-Information in den Namen von Variablen zu packen. Der Zugriff auf solche Felder ist offenbar auch hier ein Problem.
Dein Code sieht wegen der großen Menge fast gleicher Variablen-Namen undebugbar aus. Ich glaube nicht, dass man ein Programm erweitern oder warten kann, das solche Zeilen enthält:
@denny: Vielen Dank, es scheint funktioniert zu haben... obwohl ich die Funktion vor 1 Stunde auch schon ausprobiert habe, scheinbar gabs dort einen Fehler meinerseits.
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.