convert a time series into a real time animated plot

60 visualizaciones (últimos 30 días)
Marc Elmeua
Marc Elmeua el 26 de Mzo. de 2022
Comentada: Star Strider el 27 de Mzo. de 2022
I am trying, with no success to display a plot of the attached timeseries in a way that it shows like if it was a real-time plotting.
Any help?
Thanks in advance

Respuesta aceptada

Star Strider
Star Strider el 26 de Mzo. de 2022
Try something like this —
LD = load('timeseries.mat');
time2 = LD.time2;
Time = time2.Time;
Data = time2.Data;
DataRange = [min(Data), max(Data)];
TimeRange = [min(Time), max(Time)];
figure
hold on
for k = 1:numel(Time)-1
plot(Time(k:k+1), Data(k:k+1), '-b')
axis([TimeRange DataRange])
grid
pause(0.0001)
end
hold off
Make appropriate changes to get the desired result.
.
  2 comentarios
Marc Elmeua
Marc Elmeua el 27 de Mzo. de 2022
Thanks everyone for your help. All the scripts work perfectly, yet I find this the most efficient.
PS: if someone has the same problem, maybe this helps: I was writing similar scripts (with drawnow) to the ones proposed in this thread, but I was executing them on a Livescript, hence they were not working properly.

Iniciar sesión para comentar.

Más respuestas (2)

Voss
Voss el 26 de Mzo. de 2022
Here's one way:
load('timeseries.mat')
figure();
my_line = line();
for ii = 1:numel(time2.Time)
set(my_line,'XData',time2.Time(1:ii),'YData',time2.Data(1:ii));
drawnow();
end
Alternatively, you can use an animatedline.

Walter Roberson
Walter Roberson el 26 de Mzo. de 2022
Times = time2.Time;
Data = time2.Data;
N = 10; %at a time -- one at a time is very slow
nsamp = length(Times);
h = animatedline();
for K = 1 : N : nsamp
idx = K : min(K+N-1, nsamp);
addpoints(h, Times(idx), Data(idx));
drawnow();
end

Categorías

Más información sobre Animation en Help Center y File Exchange.

Productos


Versión

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by