ich würde gerne wissen, wie es möglich ist, ein Feld eines Structs mit hilfe von eval zu belegen. Ich habe die bezeichnung des Feldes als string und würde dem jetzt gerne einen Wert zu weisen.
Code:
t = 'test.feld1'
x.a = 5
x.b = 6
%und jetzt würde ich gerne folgendes machen:
eval(strcat(t, '= x'))
Temp ist wie gesagt ein string, der die form t(1).b(2).c(3) oder so ähnlich hat.
Also ein struct, in dem ein feld, welches wieder ein struct enthält usw.
Kann es daran liegen, das varargin ein cell-array ist, und data dann nicht wirklich ein struct? Wäre es besser, wenn ich data nicht in varargin übergebe, sondern der function immer, auch wenn es in bestimmten fällen nicht benötigt wird?
Das ziel ist, in dem oben genannten struct ein feld zu ändern. Warum ich das so verschachtele hat einen Grund, auch wenn das vielleicht nicht die beste methode ist.
Danke.
Bist du sicher das t(1).b(2).c(4) korrekt ist?
Müsste das nicht t.b.c(4) heißen?
Sonst komme ich ohne genauere Infos bzw. Code von den eingehenden Daten für temp und data nicht weiter...
Kannst Du das ganze nicht mittels dynamic fields anders lösen?
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 17.03.2010, 22:52
Titel:
also ich würde schon sagen, dass es t(1).b(2).c(4) heißen muss, denn t ist ja ein struct in dem mehrere sachen gespeichert sind. ich verwende das struct, t als speicherung von objekten (die namen, Typ, und sonstige felder haben und ein feld bestandteile, in dem alle teilobjekte aufgelistet sind (diese können wieder bestandteile haben)) und objekte habe ich ja mehrere, deswegen würde ich sagen t(1).blabla, data ist auch wieder ein struct, dass die gleichen felder hat, wie die felder die bestandteile hat.
So sieht der code momentan aus und die letzte zeile bringt eben die fehlermeldung:
Darf ich fragen, was du mit dynamic fields genau meinst? Es ist halt wichtig, dass alle Objekte und bestandteile die gleiche struktur haben, da ich sie gleich behandeln will.
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 17.03.2010, 23:40
Titel:
Hej,
also ich habe jetzt den Fehler gefunden, es muss heißen
Das mit t(1).b(2)... halte ich aber weiterhin für doppeltgemoppelt:
Du greifst ja schon durch t.b auf das struct b als Teil von t zu...wie dem auch sei...
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.