|
vega1013 |

Forum-Century
|
 |
Beiträge: 162
|
 |
|
 |
Anmeldedatum: 26.02.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.12.2013, 13:30
Titel: eval umgehen
|
 |
Hallo,
ich habe folgenden funktionsfähigen Code, der die Werte von "vals" den strings von "names" zuordnet:
Jetzt ist mMn diese Lösung mit eval nicht die Beste. Gibt es eine Möglichkeit eval zu umgehen und das ganze etwas eleganter zu gestalten?
Freue mich über eure Anregungen.
Gruß
Vega
P.S.: names und vals kommen von einem anderen Programm....
|
|
|
|
|
Nras |

Forum-Meister
|
 |
Beiträge: 608
|
 |
|
 |
Anmeldedatum: 21.02.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.12.0.635 (R2011a)
|
 |
|
|
 |
|
Verfasst am: 16.12.2013, 14:06
Titel:
|
 |
Hallo,
du könntest das in ein Struct schreiben und die Strings in names als dynamische Feldnamen benutzen.
Zugriff auf die Daten gibt es dann mit data.Temp und data.Druck.
Viele Grüße,
Nras.
|
|
|
vega1013 |
Themenstarter

Forum-Century
|
 |
Beiträge: 162
|
 |
|
 |
Anmeldedatum: 26.02.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.12.2013, 15:53
Titel:
|
 |
Hallo Nras,
das sieht schon besser aus als meine Lsg. Jetzt ist schon mal der eval Befehl entfallen, aber dennoch eine Zusatzfrage:
Gibt es noch eine Möglichkeiten das ich den Inhalt von names als array Variable definiere und dieser Variable dann vals zuordne?
Viele Grüße
|
|
|
Nras |

Forum-Meister
|
 |
Beiträge: 608
|
 |
|
 |
Anmeldedatum: 21.02.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.12.0.635 (R2011a)
|
 |
|
|
 |
|
Verfasst am: 16.12.2013, 16:36
Titel:
|
 |
Hallo,
so dynamisch erzeugte Variablennamen kann man (meines Wissens nach) nur mit eval erzeugen. Und für die Weiterverarbeitung dieser Variablen, wird das dann auch eher schwierig, wenn du vorher nicht weißt, wie die Variablen heißen werden. Wenn die Namen aber immer gleich sind (z.b. immer nur Temp und Druck), dann könntest du die im Matlabfile selbst erzeugen.
Der Umgang mit den dynamischen Feldnamen von Structs hingegen ist sehr komfortabel.
Wenn du alle möglichen Vorkommenden Namen kennst, ginge noch soetwas:
Da schaut man, welcher der möglichen Namen drankommt und weist dem dann die passenden Werte aus vals zu. Schön ist das allerdings auch nicht und vor allem nicht dynamisch erweiterbar mit unbekannten Einträgen in names.
Viele Grüße,
Nras.
|
|
|
vega1013 |
Themenstarter

Forum-Century
|
 |
Beiträge: 162
|
 |
|
 |
Anmeldedatum: 26.02.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.12.2013, 18:32
Titel:
|
 |
Hallo,
die zweite Variante ist aus dem von dir genanntem Nachteil nicht sinnvoll.
Wenn man dynamisch erzeugte Variablennamen nur mit eval erzeugen kann werden ich wohl deine erste Variante weiter verfolgen. Vor allem da diese im Vgl. zu meiner Lsg. bei größeren Daten um den Faktor 10^5 schneller ist!
Besten Dank für deine Hilfe!
Viele Grüße
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 16.12.2013, 20:43
Titel: Re: eval umgehen
|
 |
Hallo vega1013,
Statt der Schleife ist hier auch CELL2STRUCT hilfreich.
Gruß, Jan
|
|
|
vega1013 |
Themenstarter

Forum-Century
|
 |
Beiträge: 162
|
 |
|
 |
Anmeldedatum: 26.02.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.12.2013, 17:40
Titel:
|
 |
Hallo Jan,
wenn auch etwas verspätet, aber vielen Dank auch dir noch für den Hinweis.
Habe es jetzt so umgesetzt, ist nach meinem Empfinden die eleganteste Lsg...
Gruß vega
|
|
|
|
|
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.
|
|