plot pause

68 visualizzazioni (ultimi 30 giorni)
vsee
vsee il 16 Ago 2011
Hello
I am using the following code to iteratively pan along the x-axis in small steps and it works fine.
asig = csvread('tek0001CH1.csv',15,0);
%tim =sig(1:1000000,1);
aamp = asig(1:2000000,2);
ts = asig(2,1) - asig(1,1);
tim = [0:2000000 - 1]*ts;
time = tim';
plot(time, aamp);
%set(h,'Motion','horizontal','Enable','on');
axis([0 max(tim) -0.1 1.9]);
ax_handle = gca;
xlimit_orig = get(ax_handle, 'Xlim');
win_xlimit = [0 0.001];
offset = 0.001;
% %Iterativley change the xlimit for the axes to pan across the figure
while win_xlimit(2) <= xlimit_orig(2)
set(ax_handle, 'Xlim', win_xlimit);
pause(0.05);
win_xlimit = win_xlimit + offset;
end
However, if I want to stop in the middle of panning (If I see something of interest in the plot), how do I do it? I tried using waitforbuttonpress fcn and that doesn't work very well. Any suggestions please.
Thanks

Risposta accettata

Jan
Jan il 18 Ago 2011
You can use a toggle button:
buttonH = uicontrol('Sytle', 'ToggleButton', ...
'Units', 'pixels', ...
'Position', [5, 5, 60, 20], ...
'String', 'Pan', ...
'Value', 1);
while win_xlimit(2) <= xlimit_orig(2)
set(ax_handle, 'Xlim', win_xlimit);
pause(0.05);
if get(buttonH, 'Value') == 1
win_xlimit = win_xlimit + offset;
end
end
  6 Commenti
Fangjun Jiang
Fangjun Jiang il 18 Ago 2011
Yes, you can. But need to move the set(ax_handle,...) line into the if statement. like below.
while win_xlimit(2) <= xlimit_orig(2)
pause(0.05);
if get(buttonH, 'Value') == 1
win_xlimit = win_xlimit + offset;
set(ax_handle, 'Xlim', win_xlimit);
end
end
vsee
vsee il 18 Ago 2011
Thanks again. That worked. Appreciate it.

Accedi per commentare.

Più risposte (1)

Fangjun Jiang
Fangjun Jiang il 16 Ago 2011
Nice work! I recommend you making a generic function which includes mostly the code in your while-loop. This generic function can take some arguments and pan any axes in a figure. When you want to stop, just press Ctrl+C to stop the execution of the function. When you want to continue, you just run the function again.
Layout a list of the input arguments,such as the figure handle, axes handle, how fast you want it move, the initial xlimit, etc. I think it can be done.
  1 Commento
vsee
vsee il 18 Ago 2011
Even if I had a function, how do I dynamically change the variable's value that I read from the keyboard, so that when the value changes, the plot begins to pan again.

Accedi per commentare.

Categorie

Scopri di più su App Building in Help Center e File Exchange

Tag

Non è stata ancora inserito alcun tag.

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by