MATLAB Answers

Plot in real time inside a loop

55 views (last 30 days)
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)
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
if cond == 1
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.


Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 16 Apr 2019
Edited: Walter Roberson on 16 Apr 2019
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;


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

Sign in to comment.

More Answers (0)