Creating a slider when real time plotting

10 views (last 30 days)
isra
isra on 5 Jan 2017
Answered: khan on 5 Jan 2017
Hello I'm plotting sensor measurements in real time, after a while the data gets so cramped and hard to read. I'd like to create a slider that will enable me to scroll through the date (x axis) in a fixed window (say 10 secs), zooming it in to allow clearer display. Is that possible with matlab? I tried the following link which displays a slider for a sine wave with fixed length, I just don't know how to make it work with real time plotting.
regards I.H

Answers (3)

khan
khan on 5 Jan 2017
to my understanding i think you need a sliding window of 10 sec sliding window mean, if yes, then you can create sliding window for taking average of the data on each 10 seconds.
  1 Comment
isra
isra on 5 Jan 2017
Edited: isra on 5 Jan 2017
I want it to zoom in to display a portion of the figure, not to do any calculations. like a magnifying lenses.

Sign in to comment.


khan
khan on 5 Jan 2017
set(data,'XLim',[st end]);
can help your problem.
  1 Comment
isra
isra on 5 Jan 2017
Edited: isra on 5 Jan 2017
Thank you very much for replying
where should I put this? in my original code that plots in real time or in the function file?
here is my current code without using the slider fucntion from the link:
%%setting up connectio with arduino
clear all;
a = arduino;
%%setting up plots and variables
time = [0]; v1 = [0]; v2 = [0];
subplot(211) ;
h = plot(time, v1, 'r-'); % Save handle to the line
title('Channel 1');
ylabel('Amplitude(V)'); axis ([0 inf 0 inf]);
subplot(212); h2= plot(time, v2, 'b-'); % Save handle to the line
title('Channel 2');axis ([0 inf 0 inf]);
ylabel('Amplitude(V)');
tic; %%starting stopwatch
%%Reading sensors
while (1)
voltage1 = readVoltage(a,'A0');
voltage2 = readVoltage(a,'A1');
%%updating x and y values for each channel
time = [time,toc]; % Append to vectors
v1 = [v1,voltage1];
v2 = [v2,voltage2];
%%updating plots
set(h, 'xdata', time, 'ydata', v1); % Update plot
set(h2, 'xdata', time, 'ydata', v2); % Update plot
drawnow;
end

Sign in to comment.


khan
khan on 5 Jan 2017
ax = findobj(gcf,'type','axes','tag',''); set(ax,'XLim',[250 300]); %here instead of [250 300] you can specify your own time window/s
after plotting your data, just specify the time interval you want zoom in to and run these two lines. it will zoom in the already plotted data to the time specified region.

Community Treasure Hunt

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

Start Hunting!