필터 지우기
필터 지우기

convert a time series into a real time animated plot

조회 수: 62 (최근 30일)
Marc Elmeua
Marc Elmeua 2022년 3월 26일
댓글: Star Strider 2022년 3월 27일
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

채택된 답변

Star Strider
Star Strider 2022년 3월 26일
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
Marc Elmeua
Marc Elmeua 2022년 3월 27일
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.

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Voss
Voss 2022년 3월 26일
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 2022년 3월 26일
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

카테고리

Help CenterFile Exchange에서 Animation에 대해 자세히 알아보기

제품


릴리스

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by