Verfasst am: 08.10.2017, 02:18
Titel: Plot mit drawnow im GUI unterbrechen
Grüße,
in meinem GUI möchte ich eine Funktion per Knopfdruck mit drawnow plotten und mit einem zweiten Knopf die Möglichkeit haben dieses zu unterbrechen. Leider funktioniert das nicht über den GUI und ich kann nur über strg+c in Matlab unterbrechen.
Ich habe es schon mit break versucht, welches ich mit einer if Funktion in die for-Schleife geschrieben habe oder pause(1) und delete(h). Die Funktion wurde dabei aber nur kurz unterbrochen und zog dann wieder ihren Stiefel durch oder fing wieder von Anfang an. Ich hatte aus einigen Foren schon weitere paar Lösungsansätze durchprobiert aber die haben auch nicht gegriffen, z.B. mit java robot.
Es muss doch noch einen Weg geben oder bleibt die Funktion unaufhaltbar?
Code:
function pushbutton1_Callback(hObject, ~, handles)
xx=1:1000; yy=1000:2000; zz=2000:3000;
for i=1:999
h(i)=line([zz(i) zz(i+1)],[xx(i) xx(i+1)],[yy(i) yy(i+1)] ,'LineWidth',3);
drawnow end
ich habe einmal versucht Deinen Vorschlag umzusetzen aber anscheinend habe ich etwas falsch gemacht. Die Funktion bricht nicht ab. Mein Versuch sah so aus:
Code:
function start_Callback(hObject, eventdata, handles)
xx=1:1000; yy=1000:2000; zz=2000:3000;
for i=1:999
a=get(handles.stop,'Value');
if a==1 break delete(h) end
h(i)=line([zz(i) zz(i+1)],[xx(i) xx(i+1)],[yy(i) yy(i+1)] ,'LineWidth',3);
drawnow end guidata(hObject, handles);
% --- Executes on button press in stop. function stop_Callback(hObject, eventdata, handles) clareset guidata(hObject, handles);
Wenn ich das richtig sehe, dann wird hiermit etwas "umgeschaltet" aber was genau weiter passiert kann ich nicht nachvollziehen. Hier bleibe ich echt ratlos
ich konnte mit einer Suchmaschine einen alten Beitrag finden, aus dem ich mich schamlos bedient habe. Scheint auch genau das zu machen, was ich möchte. Ohne "cla reset" pausiert der Plot nur, mit wird alles gelöscht.
Code:
function start_Callback(hObject, eventdata, handles)
xx=1:1000; yy=1000:2000; zz=2000:3000;
for i=1:999
h(i)=line([zz(i) zz(i+1)],[xx(i) xx(i+1)],[yy(i) yy(i+1)] ,'LineWidth',3);
% --- Executes on button press in stop. function stop_Callback(hObject, eventdata, handles) setappdata(handles.figure1,'stopPlot',1);
guidata(hObject, handles);
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.