WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Variablen aus Struct ziehen

 

Turbopavel
Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 22.11.12
Wohnort: ---
Version: R2017a
     Beitrag Verfasst am: 02.03.2021, 10:14     Titel: Variablen aus Struct ziehen
  Antworten mit Zitat      
Hallo Zusammen,

ich habe ein Struct (siehe Bild) und möchte jetzt daraus alle Daten als einzelne Variablen abspeichern. Heißt ich gebe nur das jeweilige Struct an und alle Variablen werden aus den Daten automatisch erzeugt.

Also bspw. Time = S(1).data, Speed = S(2).data, usw.

Leider habe ich nur Lösungen mit dem bösen EVAL-Befehl dazu gefunden.

Gibt es denn da keine andere Lösung?

Vielen Dank.

Screenshot 2021-03-02 101321.png
 Beschreibung:

Download
 Dateiname:  Screenshot 2021-03-02 101321.png
 Dateigröße:  8.26 KB
 Heruntergeladen:  189 mal
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.03.2021, 16:30     Titel: Re: Variablen aus Struct ziehen
  Antworten mit Zitat      
Hallo Turbopavel,

Nein, das geht nur mit dem bösen EVAL.

Auch wenn es anders machbar wäre, würde es immer noch Matlab massiv ausbremsen und das Debuggen schwer bis unmöglich machen. Ein Beispiel:
Code:
S.clear = 17;
% Der magische code, der die Variable "clear" erstellt.
clear('S')

Das wird grandios scheitern. Sowie man Variablen mit eval , assignin etc. erstellt, landen sie in einer Tabelle mit dynamisch erzeugten Daten. Jeder Zugriff auf Variablen benötigt dann eine aufwändige Such in dieser Liste. Das bremst Matlab ungemein aus. Normalerweise scannt Matlab's JIT-Accelerator nämlich beim ersten Zugriff auf die Funktion die Variablen und fügt Pointer zu den Werten in der Tabvelle direkt in den Code ein. Sowie aber eine Variable dynamisch dazwischen geschummelt wird, kann das nicht mehr funktionieren und die JIT-Funktion muss abgeschaltet werden. Schleifen brauchen dann schon mal 200 mal länger usw.

Das Debuggen ist aus den gleichen Gründen ein Horror, wenn man Variablen dynamisch erstellt. Man kann nicht mehr wissen, welcher Ausdruck eine Variable ist, welcher ein Befehl und welcher undefiniert.

Die saubere Lösung ist es, mit dem Struct weiter zu arbeiten.

Gruß Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 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.