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

Varibale .mat-Datei aus load zuweisen

 

wishi1104

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2012, 09:57     Titel: Varibale .mat-Datei aus load zuweisen
  Antworten mit Zitat      
Guten Tag,

ich habe ein Problem, dass mich schier zur weißglut treibt. Ich habe ein Programm mit einer variablen Eingabe. Je nach Einagbe muss ein bestimmtes Kennfeld geladen werden. Mit diesem Kennfeld muss dann in einer Schleife gearbeitet werden. Die Schleife ist in jedem Fall die selbe. Über ein paar string Befehle kann ich die verschiedenen Kennfelder schon problemlos adressieren.

Ich will jetzt einer Variable das spezielle Kennfeld zuweisen.

Code:

Kennfeld=load (speziellesKennfeld);
 


liefert mir für Kennfeld nur einen Struct in dem sich dann das spezielle Kennfeld befindet. Dies ist auch wieder sehr umständlich zu adressieren.

Gibt es da eine einfach Lösung?


wishi1104

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2012, 12:06     Titel:
  Antworten mit Zitat      
Code:

strKennfeld=['ZR' num2str(alterGang) num2str(neuerGang) Schaltprogramm '_FreigabeMoment'];
load (['ZugRueckschaltung', filesep, strKennfeld]); %Kennfeld laden
FreigabeMoment_Kennfeld=eval(strKennfeld);
 


Habe es gelöst!
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.07.2012, 15:41     Titel:
  Antworten mit Zitat      
Hallo wishi1104,

Nein! Dies würde ich nun explizit nicht als "Lösung" bezeichnen. Der Zugriff per EVAL ist tückisch, zeitraubend und kaum debugbar. Mehr dazu findest Du in bestimmt 500 Threads in diesem Forum, in denen von EVAL abgeraten wird.

Das Grundproblem Deines Codes ist, dass Du Indicies in die Namen der Variablen geschmuggelt hast. Viel effizienter und übersichtlicher ist es, Indizes als Indizes zu verwenden, also z.B. ZR{2,3} statt "ZR23". Dies würde z.B. auch erlauben bei "ZR123" noch zu wissen ob es um "ZR{1,23}" oder "ZR{12, 3}" geht.
Eine andere Methode wäre:
Code:
ZR.Data{1} = rand(100);
ZR.Index(1, 1:2) = [2, 3];
ZR.Data{2} = rand(100);
ZR.Index(2, 1:2) = [2, 17];
etc;

Oder die Index-Felder könnten in eine Matrix geschrieben werden, was das Finden eines speziellen Daten-Satzes vereinfachen würde.

Wenn Du aber unbedingt bei "ZR23" bleiben möchtest, wäre dies deutlich besser:
Code:
strKennfeld = ['ZR' num2str(alterGang) num2str(neuerGang) Schaltprogramm '_FreigabeMoment'];
Data = load (fullfile('ZugRueckschaltung', strKennfeld));
FreigabeMoment_Kennfeld = Data.(strKennfeld);

Das nennt man "dynamic field names" und es verhindert, dass Dir LOAD den lokalen Workspace mit unerwarteten Variablen überflutet.

Viele Grüße, Jan

PS. Falls meine Antwort emotional aufgewühlt erscheint, nimm das bitte nicht persönlich. Das liegt nur daran, dass ich das gleiche schon 500 mal geantwortet habe ;-)
PPS. Hat einer mitgezählt? Bin ich erst bei 371?
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 - 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.