MATLAB Answers

0

Plot in real time inside a loop

Asked by Paul Pogba on 16 Apr 2019
Latest activity Commented on by Walter Roberson
on 15 Oct 2019 at 7:28
I'm reading data from ADC in real time (while loop) and I'm trying to plot in real time. Now, I can't use
pause on; hold on; etc
Because it interferes with ADS's API and how it samples the data. My code looks something like that and it does plot in real time.
while 1 %sampling from ADC
%figure(1); if I uncomment just this line, API crashes
plot(x, datafromADC)
drawnow;
end
But if I want to plot to two different figures at the same time, I can't do it, ADC stops sampling and gives me criptic errors. I try to do something like that:
while 1 %sampling from ADC
figure(1);
plot(datafromADC);
drawnow;
if cond == 1
figure(2);
plot(datafromADC*2);
dranow;
end
end
Is there another way to plot to two different figures inside the loop? Should I use something else instead of 'dranow'?
I'm using DATAQ DI-1110 and its MATLAB API.

  0 Comments

Sign in to comment.

1 Answer

Answer by Walter Roberson
on 16 Apr 2019
Edited by Walter Roberson
on 16 Apr 2019
 Accepted Answer

fig1 = figure(1);
ax1 = axes('Parent', fig1);
ph1 = plot(ax1, nan, nan);
fig2 = figure(2);
ax2 = axes('Parent', fig2);
ph2 = plot(ax2, nan, nan);
while true
update data at this point
set(ph1, 'XData', x, 'YData', datafromADC);
set(ph2, 'XData', x, 'YData', datafromADC*2);
drawnow limit;
end

  2 Comments

If I use plot3 instead of plot, how should the code outside of while loop look like?
ph1 = plot3(ax1, nan, nan);
Walter Roberson
on 15 Oct 2019 at 7:28
ph1 = plot3(ax1, nan, nan, nan);
and you would likely need to update the ZData property as well.

Sign in to comment.