convert a time series into a real time animated plot

58 vues (au cours des 30 derniers jours)
Marc Elmeua
Marc Elmeua le 26 Mar 2022
Commenté : Star Strider le 27 Mar 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

Réponse acceptée

Star Strider
Star Strider le 26 Mar 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 commentaires
Marc Elmeua
Marc Elmeua le 27 Mar 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.
Star Strider
Star Strider le 27 Mar 2022
@Marc ElmeuaThank you!

Connectez-vous pour commenter.

Plus de réponses (2)

Voss
Voss le 26 Mar 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 le 26 Mar 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

Catégories

En savoir plus sur Animation dans Help Center et File Exchange

Produits


Version

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by