Plotting subplot in real time Problem

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

 采纳的回答

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 个评论

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));
Thank you so much!!! :)

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 MATLAB Support Package for Arduino Hardware 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by