Der Grund, dass es eine Abbildung anzeigt, ist, weil, wenn Sie Ihre state
Struktur genau betrachten, dort ein figure
Objekt darin gespeichert wird. Wenn Sie dieses Grafikobjekt (oder tatsächlich ein Objekt) aus einer Datei laden, rekonstruiert MATLAB das Objekt. Das definierte Verhalten beim Laden einer Figur (es ist loadobj
Methode) ist das Öffnen der Figur. Dies ist ein aktuelles Problem, da ältere Versionen von gespeicherten MATLAB-Grafiken nur als Zahl behandelt werden und beim Laden eines Grafik-Handle aus der Datei hatte MATLAB keine Möglichkeit zu wissen, dass es eine Figur sein sollte, damit sie es analysieren würde als Zahl und gehe weiter, ohne ein neues Zahlenfenster anzuzeigen.
Leider seit Ihrem figure
Griff innerhalb eines struct
verschachtelt ist gibt es keine einfache Möglichkeit, nicht Last es. Wahrscheinlich ist es am einfachsten, das Figurenobjekt direkt nach dem Laden der Datei zu löschen (da Sie das Handle bereits haben).
data = load('filename.mat', 'state');
delete(data.state.hFigure);
Und wenn Sie wirklich die Figur nicht mag sogar für eine zweite poping, können Sie die Standardfigur Visible
Eigenschaft auf 'off'
vor dem Laden gesetzt und dann danach zurückgesetzt.
% Determine what the visibility was
prev = get(0, 'DefaultFigureVisible');
% Make it so figures don't appear
set(0, 'DefaultFigureVisible', 'off')
% Load data and delete the figure
data = load('filename.mat', 'state');
delete(state.hFigure);
% Reset the visibility
set(0, 'DefaultFigureVisible', prev)
Eine andere mögliche Lösung (die Sie nicht benötigen würde wissen, wo die figure
Griffe in Ihrer Struktur sind) ist die DefaultFigureCreateFcn
zu überschreiben, um einfach eine beliebige Zahl zu löschen, die erstellt wird.
% After this point you can't create any figures or they will delete themselves
set(0, 'DefaultFigureCreateFcn', @(s,e)delete(s))
% Load your data (no figures!)
load('filename.mat', 'state')
% Allow figures to be created again
set(0, 'DefaultFigureCreateFcn', '')
In Zukunft dieses Verhalten zu vermeiden, sollten alle Grafiken nicht sparend Griffe in Ihrer .mat Dateien. Sie sind sehr große Objekte und MATLAB wird tatsächlich eine Warnung ausgeben, wenn Sie eine in eine Datei speichern, da dies nicht empfohlen wird.
Warnung: Die Abbildung ist in test.mat gespeichert. Das Speichern von Grafik-Handle-Variablen kann die Erstellung sehr großer Dateien verursachen. Um Grafiken Zahlen zu speichern, verwenden Sie savefig
.
AFAIK, dieses seltsame Verhalten wurde in den letzten MATLAB-Versionen hinzugefügt. Da ['.fig' Dateien tatsächlich' .mat' Dateien sind (http://undocumentedmatlab.com/blog/fig-files-format), könnte 'load (Dateiname,' - mat ') 'einfach funktionieren ... Wenn diese Lösung für Sie funktioniert, kann ich sie als Antwort posten. –
@ Dev-iL Vielen Dank für die Antwort. Ich habe deine Lösung versucht, aber leider hat es nicht funktioniert. Trotzdem danke. – MxNx
Ok, nächste Idee - haben Sie versucht, die gewünschte Variable mit ['matfile'] (http://www.mathworks.com/help/matlab/ref/matfile.html) zu laden? –