Problems when running GUI graph plotting with 'while' or 'if' loops

3 次查看(过去 30 天)
Hi, I am doing a GUI plotting, trying to implement a real-time plot. I use 'if' loop for different conditions with the pushbutton callback, but when 'if' loop is used, there is error and the other conditions will not execute. So, I use 'while' loop instead and it works. The problem is, when the 'while' loop is used, the command inside the 'while' loop cannot run normally as the conditions keep refreshing by the loop. Can anyone help me?
My function looks like this, inside a pushbutton callback:
if hObject.String=='Start'
set(handles.pushbutton1,'String','Pause');
for i=1:end
plot(x);
end
end
while hObject.String=='Pause' % when 'if' is used here, the plot won't stop plotting
set(handles.pushbutton1,'String','Cont.');
plot(x(1:i));
% at here I want to select and highlight data, since 'while' loop is running, the dragged plot will return to the 'while' loop place and the datatip unable to be selected.
end
while hObject.String=='Cont.'
set(handles.pushbutton1,'String','Pause');
j=i;
for i=j:end
plot(x);
end
end

采纳的回答

Rik
Rik 2019-7-29
You should be using strcmp to test if a char array is equal to another char array. Your current tests are array operations.
Also, if is not a loop. The only ways to start a loop is with while, for, and parfor.
A final note: two of your loops just repeat the same code without any dependancy on the loop variable. Why are you using a loop at all there? Unless x is a function, you should use the pause function to stop plotting for a moment.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by