I am interfacing Arduino with MATLAB through serial plot. I have an accelerometer that input three values each time into the serial plot. I am trying to plot the 3 channel data into 3 separate subplot in real time. For some reason, only my last subplot will continuous scroll and the first two will stay at one scroll window.
if(scrollWidth > 0)
set(plotgraph1,'XData',time(time > time(count)-scrollWidth),...
'YData',datax(time > time(count)-scrollWidth));
xlim([time(count)-scrollWidth time(count)]);
set(plotGraph2,'XData',time(time > time(count)-scrollWidth),...
'YData',datay(time > time(count)-scrollWidth));
xlim([time(count)-scrollWidth time(count)]);
set(plotGraph3,'XData',time(time > time(count)-scrollWidth),...
'YData',dataz(time > time(count)-scrollWidth));
xlim([time(count)-scrollWidth time(count)]);
end

 Réponse acceptée

Jan
Jan le 5 Mai 2017
xlim([time(count)-scrollWidth time(count)])
This updates the X-limits of the current axes. If you only set the XData of an existing line object (created by a plot command), the current axes does not change. Therefore define the affected axes explicitely:
xlimit = [time(count)-scrollWidth, time(count)];
set(axes1, 'xlim', xlimit);
and the same for the other two axes also - assuming that axes1 is defined accordingly. You can set all three axes with one command also:
set([axes1, axes2, axes3], 'xlim', xlimit);

4 commentaires

Lok Yiu To
Lok Yiu To le 6 Mai 2017
Thank you so much!!! :)
One follow-up question:
if I want to overlay two signals in one plot, do I just do the following?
set(plotgraph1,'XData',time(time > time(count)-scrollWidth),...
'YData',datax(time > time(count)-scrollWidth),...
'XData',time(time > time(count)-scrollWidth),...
'YData',datay(time > time(count)-scrollWidth));
Thank you :)
No, this will not work. But you can create two line objects in the same axes:
AxesH = axes('NextPlot', 'add');
plot1graph = plot(AxesH, ?, ?);
plot2graph = plot(AxesH, ?, ?);
And later:
set(plotgraph1,'XData',time(time > time(count)-scrollWidth),...
'YData',datax(time > time(count)-scrollWidth));
set(plotgraph2, 'XData',time(time > time(count)-scrollWidth),...
'YData',datay(time > time(count)-scrollWidth));
OMARI TAHAR
OMARI TAHAR le 27 Mai 2020
Thank you so much!!! :)

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Graphics Performance dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by