Анимация временных рядов в Matlab - PullRequest
0 голосов
/ 11 октября 2018

Я новичок в работе с временными рядами в Matlab и изо всех сил пытаюсь добиться этого.У меня есть данные о теплопередаче временных рядов (в течение 20 мс с шагом 1 микросекунда) в этих 11 точках (см. Код ниже).Я понятия не имею, как я могу собрать их вместе, чтобы иметь возможность генерировать график на каждом временном шаге и использовать getframe на каждом временном шаге для создания анимации.Любая помощь о том, как начать с этим, будет высоко ценится.Вот ссылка на 11 файлов данных с указанием времени в столбце 1 и теплопередачи в столбце 2: https://drive.google.com/open?id=1oDAdapqvL-blecb7BOLzxpeiJBsqLd59

Пожалуйста, не стесняйтесь предлагать любые другие инструменты (matplotlib / plotly и т. Д.), Которые могут быть лучше в этомсценарий также.Благодаря тонну!

close all
clear all

x1=399.5
x2=400.5


y0=0 
y1=4
y2=8
y3=12
y4=16
y5=20
y6=-4
y7=-8
y8=-12
y9=-16
y10=-20

%The gauge locations for the first row will be [x1,y1], [x1,y3], [x1,y5], [x1,y6], [x1,y8],
%[x1,y10]

%The gauge locations for the second row will be [x2,y0], [x2,y2], [x2,y4], [x2,y7],
%[x2,y9]

figure

plot(x1,y1,'r.', x1,y3,'r.', x1, y5, 'r.', x1, y6, 'r.', x1, y8, 'r.', x1, y10, 'r.')
hold
plot(x2,y0,'b.', x2,y2,'b.', x2, y4, 'b.', x2, y7, 'b.', x2, y9, 'b.')
axis([390 410 -30 30])

1 Ответ

0 голосов
/ 11 октября 2018

В Matlab вы можете использовать, как вы сказали, функции getFrame и writeVideo.Я объясню это для очень общего случая, который вы затем сможете применить к своему.

Допустим, у нас есть график, который изменяет данные на каждой итерации внутри цикла for (часто случается при решении PDE и т. Д.)с примерной функцией solverIteration (составленный ...).Мы строим вектор y над нашим доменом x.

. Чтобы записать видео, нам нужно сделать следующее:

video = VideoWriter('myVideo.avi'); %Create a video object
open(video); % Open video source - restricts the use of video for your program

for m=1:K
    y = solverIteration(y);
    plot(x,y);
    drawnow;

    vidFrame = getframe(gcf);
    % instead of gcf you can specify which figure you want to capture

    clf;

    writeVideo(video,vidFrame); % adds frames to the video

end


close(video);

Этот скрипт является примером того, какзаписать видео.На официальном сайте matlab .

есть несколько примеров и объяснений.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...