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

Daten Importieren von einem Fig File mit mehreren Plots

 

calipso
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 06.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.05.2013, 16:02     Titel: Daten Importieren von einem Fig File mit mehreren Plots
  Antworten mit Zitat      
Guten Tag,

ich versuche gerade die Daten von einem Figure File zu importieren. Dieses File enthält allerdings 3 Plots.
Ich habe mit folgendem code Probiert :

Code:
[filename, pathname, filterindex] = uigetfile({'*.fig', 'Matlab Figure (*.fig)'}, 'Pick a file');
h = openfig([pathname filename]);
a = get(h);
b = get(a.Children);
for i = 1:length(b.Children),
    c = get(b(i,1).Children);
    for j = 1:length(c)
        evalin('base',['t_' num2str(i) '_' num2str(j) ' = c(j,1).XData;']);
        evalin('base',['y_' num2str(i) '_' num2str(j) ' = c(j,1).YData;']);
    end
end



Ich bekomme leider keine richtige daten wie erwünscht.
Kann jemand mir weiterhelfen?

Vielen Danke
Remy

[EDITED, Jan, Bitte Code-Formattierung verwenden - Danke!]
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: 06.05.2013, 16:20     Titel: Re: Daten Importieren von einem Fig File mit mehreren Plots
  Antworten mit Zitat      
Hallo calipso,

Und wieder ein EVALIN-Problem. Es würde sich wirklich lohnen, die Hilfetexte mit einer ausdrücklichen Warnung in fetten roten Buchstaben zu versehen, dass man sich im Allgemeinen mit EVAL/EVALIN keinen Gefallen tut.

EVALIN werten den Ausdruck im Base-Workspace aus, also im Command-Window. Die Daten von "c" befinden sich aber im lokalen Workspace, also noch nicht im Base-Workspace -- ansonsten bräuchtest Du ja kein EVALIN!

Noch sicherer wäre meine Vermutung, wenn Du postest, welche Fehlermeldung auftritt oder inwiefern das Ergebnis von Deinen Erwartungen abweicht.

Vorschlag: erstelle eine Funktion und übergib die Daten als Output:
Code:
function Imported = myImport
[filename, pathname, filterindex] = uigetfile({'*.fig', 'Matlab Figure (*.fig)'}, 'Pick a file');
h = openfig([pathname filename]);
a = get(h);
b = get(a.Children);
Imported.T = cell(1, length(b.Children));
Imported.Y = cell(1, length(b.Children));
for i = 1:length(b.Children)
    c = get(b(i,1).Children);
    Imported.T{i} = cell(1, length(c));
    Imported.Y{i} = cell(1, length(c));
    for j = 1:length(c)
        Imported.T{i}{j} = c(j,1).XData;
        Imported.Y{i}{j} = c(j,1).YData;
    end
end

Nun aufrufen mit "Imported = myImport".

Das hat den weiteren großen Vorteil, dass Du diese Funktion auch aus anderen Funktionen heraus aufrufen kannst, ohne dass Dein Base-Workspace mit Variablen geflutet wird. Dann kann man im Laufe der Evolution eines Programms auch hunderte Unterprogramme einführen, ohne dass man befürchten muss, dass zwei verschiede die Variable "c" im Base-Workspace für verschiedene Daten benutzen und sich damit gegenseitig behindern.

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 - 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.