Verfasst am: 18.11.2013, 12:19
Titel: struct Namen zur Definition von Variablen verwenden
Moin moin,
ich habe ein stract namens "test". Das struct beinhaltet 6 "fields". Field Y ist eine 1x35 Matrix. Aus dieser Matrix muss ich mir automatisch bestimmte Variablen definieren. Da ist z.B. die Variable : test.Y.(1,3) in diesem fall die Zeit.
Für den weiteren Verlauf muss ich den Variablen "vernünftige" namen geben.
Also wäre: t = test.Y(1,3).
Da in meinem Fall aber sich die structs namentlich unterscheiden aber in der "inneren" Struktur immer gleich sind, speichere ich über eine Variable "Name" mit Hilfe einer Schleife den aktuellen struct namen ab.
Dann ist name = 'test'.
Um dann t abhängig von dem aktuellen struct namen definieren zu können will ich den "wert" der hinter der Variablen Name abgespeichert ist zur definitin benutzen. Also als Beispiel: t = "name".Y(1,3)
Wie gesagt die struct struktur ist bei allen gleich, daher kann z.B das " .Y(1,3)" immer bleiben, nur muss ich zur definition der Variablen den aktuellen struct namen verwenden, den ich hinter der variablen "name" hinterlegen.
Leider funktioniert die definition der Variablen nicht ( t = 'name'.Y(1,3) )
habe schon alle möglichen Klammern probiert....bekomme immer nur den Error--> Error: Unexpected MATLAB expression.
Ich weiß nicht wie ich den Namen der hinter der Variablen "name" liegt ansprechen soll, damit ich "t" definieren kann.
Ich ich habe das Problem halbwegs verständlich beschrieben...
Vielen Dank schonma!
dynamische Variablennamen sind generell keine gute Idee. Man kann zwar mit EVAL / ASSIGNIN Wege finden, das umzusetzen, aber das wird unübersichtlich und schwierig zu debuggen.
Sinnvoller wäre es meiner Meinung nach, einen einheitlichen Namen (test o.ä.) zu verwenden und den Namen in der Struktur abzulegen.
Sollte es mehrere solcher Strukturen geben, kann man ein Strukturarray daraus machen.
das kann man mit eval lösen. bei structs darf der erste teil nicht dynamisch sein. ich würde aber bevor ich mit eval arbeite nochmal gucken ob es nicht möglich ist gleich sinnvolle daten namen und strukturen zu generieren. du sihst ja wie umständlich es ist wenn das ganze schlecht abgespeichert ist. eval ist nur schwer zu debuggen. und das ganze würd leuten die später mit deinem programm vieleicht arbeiten nur kopfschmerzen bereiten. warum heißen die struckts alle anders wenn sie doch gleiche daten enthalten? kann man das nicht besser lösen? etc.
_________________
wenn die "inne Struktur", wie du sie so schön nennst, immer gleich ist, dann empfielt es sich, die Daten auch passend einzulesen, sofern möglich. Mann kann die structs dann übereinanderlegen und kommt gar nicht erst in die Bedrängnis, mit den unterschiedlichen Dateinamen arbeiten zu müssen. Z.B.:
hmm..ok. Also ich arbeite noch nicht lange mit Matlab, deshalb kann ich nicht so genau sagen ob das auch gehen würde was du vorgeschlagen hast. Es sieht bei mir nur so aus dass ich mehrere hundert Daten auswerten muss und da unterscheiden sich halt die Namen der structs jedoch nicht die namen und die Formate der structs. Deshalb fand ich die idee eigentlich gar nicht so verkehrt bis ich an den besagten punkt gekommen bin...
Es sind 3 Antworten da. Falls es auf meinen Vorschlag bezogen war: ich bin da sehr zuversichtlich.
Zitat:
Es sieht bei mir nur so aus dass ich mehrere hundert Daten auswerten muss
Mit anderen Worten, du hättest bei deinem Ansatz mehrere Hundert Variablen im Workspace. Zudem müsstest du dir wohl "merken",
Zitat:
welche
Hundert Variablen du denn hast, wenn du sie weiterverarbeiten möchtest.
Struktur-Array sollte deutlich angenehmer sein:
- eine Variable
- alles übersichtlich
- Abarbeitung in einer for-Schleife problemlos möglich.
Umbenennen kannst du Variablen händisch im Workspace Browser, über Rechtsklick. Alternativ:
Das hauptprogramm steht eigentlich schon zu 80%. Dabei ist auch die Idee jedes struct einzeln einzulesen, zu bearbeiten, benötigten Daten abzuspeichern und wieder zu löschen. Deshalb würde es mich freuen wenn mir ggf. jemand zeigen könnte wie man mein Problem mit der Methode lösen könnte die ich soweit schon fertig habe...also einige hatten ja "eval" angesprochen..
Wie haben denn die hunderte an Daten verschiedene Namen bekommen?
Die muß ja dann irgendjemand von Hand eingegeben haben, der Arme ;-(
Ansonsten dürfte es wohl kein Problem sein, diese Daten in ein einheitliches Struct zu laden. Um es nochmal deutlich zu sagen: die Lösung mit eval ist keine wirkliche Lösung!
Es gibt mehrere unterschiedliche Dateinamenarten...die wurden wahrscheinlich auch mit Matlab erzeugt Ich habe meinen Ansatz meinem Chef, der selber ein sehr erfahrener Matlabnutzer ist, gezeigt, und der hatte kein Problem damit und wieso bitte ist es "keine wirkliche Lösung"??? Das Skript mach genau dass was es soll!!! Ich will ja damit keinen Programmier-Schönheitswettbewerb gewinnen Zumal ich ja auch gesagt habe dass ich noch nicht lange mit Matlab arbeite...deshalb ist es für mich nicht immer einfach nachzuvollziehen wie hier einige Tips/Lösungsansätze gemeint sind.
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.