es ist sehr schwierig, Code-Schnipsel ohne den Gesamtkontext zu verstehen.
Bitte auch immer beschreiben, was nicht klappt oder funktioniert. Gibt es eine Fehlermeldung? Ein unerwartetes Verhalten? Welche bzw. inwiefern?
[file,path]=uiputfile({'*.png';'*.jpg';'*.tif';'*.eps';'*.pdf'},'Save Figure As',name);
if file ~= 0
%Gets the size of the file name
[empty,filechar]=size(file);
%Deletes the file type from teh end of the file name und stores it
filetype(3)=file(filechar);
filetype(2)=file(filechar-1);
filetype(1)=file(filechar-2);
file(filechar)=[];
file(filechar-1)=[];
file(filechar-2)=[];
file(filechar-3)=[];
%Run the export_fig command with the path and file name, along with filetype
%export_fig(X,[path,file],['-',filetype],'-painters');
set(gca, 'Color', 'none');
export_fig(X,[path,file],['-',filetype],'-painters','-transparent');
set(gca, 'Color', 'w');
Um es mal zu erklären ich habe eigentlich schon Erfahrung mit GUIs und deren gegenseitige Übergabe von Daten, nur das Problem ist ich habe hier einen Code bekommen den ich zum Teil "repariert" und erweitert habe.
Ich habe aber immer mit den automatisch erstellten Codes (bzw. Callbacks) gearbeitet (z.B. evalin, assignin usw.).
Hier wird der Code aber in einer separat erstellten M-File geschrieben.
In der automatisch generierten M-File wurde lediglich dies geschrieben:
Code:
unction varargout = ImdEctr(varargin) % PLTBACRES Application M-file for ImdEctr.fig % FIG = PLTBACRES launch ImdEctr GUI. % PLTBACRES('callback_name', ...) invoke the named callback.
% Last Modified by GUIDE v2.5 12-Dec-2014 17:49:24
Und ein Beispiel für einen Callback in dieser M-File sieht wie folgt aus:
Code:
functionvarargout = VoltageX_Callback(h, eventdata, handles, varargin) % Stub for Callback of the uicontrol handles.VoltageX. disp('VoltageX Callback not implemented yet.')
switch action
case 'FrequencyZ'
frequencyZ
case 'VlinermsZ'
vlinermsZ
case 'IlinermsZ'
ilinermsZ
case 'IlinepeakZ'
ilinepeakZ
case 'IlineaveZ'
ilineaveZ
case 'VphasermsZ'
vphasermsZ
case 'IphasermsZ'
iphasermsZ
case 'IphasepeakZ'
iphasepeakZ
case 'IphaseaveZ'
iphaseaveZ
case 'IrippleZ'
irippleZ
case 'IsupplyZ'
isupplyZ
case 'PFZ'
pfZ
case 'EfficiencyZ'
efficiencyZ
case 'SiptZ'
siptZ
case 'PiptZ'
piptZ
case 'PoutZ'
poutZ
case 'PlossZ'
plossZ
case 'VdZ'
vdZ
case 'VqZ'
vqZ
case 'IdZ'
idZ
case 'IqZ'
iqZ
case 'LdZ'
ldZ
case 'LqZ'
lqZ
case 'XdZ'
xdZ
case 'XqZ'
xqZ
case 'RphaseZ'
rphaseZ
case 'LphaseZ'
lphaseZ
case 'MphaseZ'
mphaseZ
case 'AdvZ'
advZ
case 'CndZ'
cndZ
case 'OmegaZ'
omegaZ
case 'TorqueZ'
torqueZ
case 'TrippleZ'
trippleZ
case 'TotalLossZ'
totallossZ
case 'StatorLossZ'
statorlossZ
case 'RotorLossZ'
rotorlossZ
case 'OhmicLossZ'
ohmiclossZ
case 'IronLossZ'
ironlossZ
case 'MagnetLossZ'
magnetlossZ
case 'WWFZ'
wwfZ
case 'AddLossZ'
addlossZ
case 'ConverterLossZ'
converterlossZ
case 'Plot'
plotres
case 'ASCII'
ascii
case 'PUOnOff'
puonoff
case 'GridOnOff'
gridonoff
case 'UserDataDate'
userdata
case 'UserDataUser'
userdata
case 'UserDataIdentifier'
userdata
case 'UserDataComment'
userdata
case 'SaveGraph'
SaveGraph
otherwise disp(['Action ',action,'is not defined!']) end
Dies speichert mir aber die ganze GUI als Bild. Ich brauche aber nur die "axes1" aus der GUI.
Die Frage ist hier wie komme ich an die "axes1" ran.
Wenn ich folgenden Code direkt in die eigentliche GUI-M-File speichere funktioniert alles aber nur wenn ich diese direkt von dort aus starte.
Ich möchte diesen Code aber auch gerne die die selbst erstellte M-File einfügen um keine "Unordnung" in den ganzen M-Files zu erstellen.
Code:
% --- Executes on button press in SaveGraph. functionvarargout = SaveGraph_Callback(h, eventdata, handles, varargin) % hObject handle to SaveGraph (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % handles = guidata(hObject);
f = figure('visible','off');
f_copy = axes;
copyobj(allchild(handles.axes1),f_copy);
colorbar grid on
[filename,pathname] = uiputfile({'*.jpg;*.tif;*.png;*.gif;*.fig','All Image Files';...
'*.*','All Files' },'Save Image');
saveas(f,[pathname,filename],'jpg');
close(figure)
wo kommt denn PltBacRes her?
Wenn das der Name der GUI an sich ist, bettelt man damit quasi um Probleme.
Eine Möglichkeit, wie man vielleicht noch die Übergabe des Handles vermeiden kann (das willst du anscheinend nicht, warum auch immer), wäre Tag oder Name zu vergeben und dann mit findObj(0,...) danach zu suchen.
Das Bild das ich speichere bleibt aber leer.
Kannst du mir denn ein Beispiel nennen wie ich die handles hier ausgeben soll wenn ich es nicht mit dem Figure Namen machen soll?
Kann es sein das evtl. bei copyobj etwas schief geht ?
Oder liegt es evtl. daran das der Plot-Button auch eine eigene function ist/hat?
(Ich kann dir wenn du Lust und Zeit hast die ganze M-File mal zu kommen lassen, es ist schwierig immer kleine Schnipsel daraus zu zeigen. Das ganze ding besteht aus insgesamt 5260 Zeilen)
nicht aus-, sondern als Variable, als Eingabeargument übergeben.
Mache die Figure doch mal sichtbar. Zudem würde ich im Debugging-Modus mal nachsehen, ob FindAxes ein Objekt enthält.
Das ganze wäre sehr viel einfacher, wenn du ein reproduzierbares Beispiel liefern könntest. Es muss ja nicht der gesamte Code sein, im Gegenteil - es reicht vollkommen, wenn du es auf das wesentliche reduzierst.
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
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.