|
Kai_K |

Forum-Anfänger
|
 |
Beiträge: 27
|
 |
|
 |
Anmeldedatum: 09.11.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.09.2013, 20:39
Titel: variable mit string
|
 |
Hallo Zusammen,
ich möchte gerne einen String nutzen, der in einer Variable steht um dadurch einem Struct einen Wert zuordnen zu können.
Ich habe hier im Forum ein wenig rum gelesen. Leider habe ich nur erfahren, wie man es nicht machen soll. (Also eval, assignin,... nutzen) Hat jemand von euch einen Tipp für mich?
So sieht es bei mir bisher aus:
name = 'name1.unterpunkt.test'
eval(name) = 5
(mit dem eval funktioniert es auch nicht)
Also an der Stelle name1.unterpunkt.test möchte ich gern die 5 stehen haben.
(Später mal sollen die namen in einer for schleife hoch gezählt werden.)
Für Hilfe bin ich sehr dankbar.
Viele Grüße,
Kai
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 20.09.2013, 20:58
Titel:
|
 |
Hallo,
dynamische Variablennamen sind, wie du ja erfahren hast, keine gute Idee. Was man jedoch machen kann, ist die Feldnamen dynamisch wählen:
Dabei ist zu beachten, dass feldname einen als Variablennamen zulässigen String enthalten muss.
Grüße,
Harald
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 21.09.2013, 00:39
Titel:
|
 |
Zitat: |
(Später mal sollen die namen in einer for schleife hoch gezählt werden.) |
du kannst die name so wie harald es gesagt hast auch dynamisch mit nummer versehen um es hochzuzählen. num2str etc
du solltest dir aber wirklich überlegen ob das zielführend ist. wenn sachen hochgezählt werden hört sich das danach an als wenn ein index im namen versteckt wird. sowas ist meist schlecht und cell arrays sind da oft besser geeignet.
_________________
richtig Fragen
|
|
|
Kai_K |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 27
|
 |
|
 |
Anmeldedatum: 09.11.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.09.2013, 08:50
Titel:
|
 |
|
 |
|
Guten Morgen zusammen,
vielen Dank für eure schnellen Antworten.
Leider habe ich deine Lösung nicht für mein Problem angewendet bekommen.
Ich bräuchte für jeden Namen ein eigenes Struct. Und so kann ich nur alle in einem Übergeordnetem Struct unterbringen, oder? (Das ginge Notfalls allerdings auch)
Weiterhin versuche ich den Feldnamen auf eine tiefere Ebene zu bekommen.
(Also: feldname = 'ebene1.ebene2.ebene3')
dabei bekomme ich allerdings immer die Meldung "Invalid field name"
Zitat: |
ein index im namen versteckt wird. sowas ist meist schlecht und cell arrays sind da oft besser geeignet.
|
Ja genau, Winkow. Es soll der Name mit dem index 1 (name_1) bis index n (name_n) hochgezählt werden und dann auf verschiedenen Eben Eigenschaften / Untereigenschaften mit Werten versehen werden (die Werte werden aus anderen Structs ausgelesen).
Kannst du mir sagen, wie ich das als cell array aufbauen könnte?
Könnt ihr mir dabei vielleicht auch noch weiterhelfen?
Besten Dank
Viele Grüße,
Kai
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 21.09.2013, 09:00
Titel:
|
 |
|
 |
|
Zitat: |
Dabei ist zu beachten, dass feldname einen als Variablennamen zulässigen String enthalten muss. |
genau so umständlich wird es auch die felder wieder auszulesen. ich hoffe für dich das du nicht zu viel mit den daten machen willst
Zitat: |
Ja genau, Winkow. Es soll der Name mit dem index 1 (name_1) bis index n (name_n) hochgezählt werden und dann auf verschiedenen Eben Eigenschaften / Untereigenschaften mit Werten versehen werden (die Werte werden aus anderen Structs ausgelesen).
Kannst du mir sagen, wie ich das als cell array aufbauen könnte? |
anstatt name_1 und name_2 nimmst du halt name{1} name{2} damit lässt sich viel leichter arbeiten. du kannst in eine cell dann auch weitere cells packen. wobei verschachtelungen immer umständlich sind und du lieber gucken solltest ob du das auflösen kannst. mehr als 2 ebenen wird dann ein index wirrvar geht aber auch. die cells sehen im wörkspace zwar nicht so "schön" aus wie stucts aber man kann damit viel leichter rechnen da die felder viel leichter zu indizieren sind.
_________________
richtig Fragen
|
|
|
Kai_K |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 27
|
 |
|
 |
Anmeldedatum: 09.11.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.09.2013, 10:45
Titel:
|
 |
Vielen Dank Winkow,
ich habe mich jetzt für eine Struktur entschieden, wobei ich die nötige tiefe mit Structs erreiche und die (vielen) Daten dadrin allerdings in Cells darstelle.
Grüße,
Kai
|
|
|
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
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.
|
|