Как отобразить группу сюжетов в виде фильма?

У меня есть 30 участков тепловой карты. Как я могу представить эти сюжетные линии в виде анимации или фильма (т. е. одну тепловую карту каждые 0,5 секунды)?

Подграфики получаются с помощью следующего кода:

var = {'GeneX','GeneY','GeneZ'};
syms x y z S
alpha_x = 3.9e-2;
beta_x = 6.1;
z_x = 1.3e-5;
n_zx = 2.32;
alpha_y= 4.3e-2;
beta_y = 5.7;
x_y = 7.9e-4;
n_xy = n_zx;
delta_y = 1.05;
x_z = 12e-2;
n_xz = n_zx;
y_z = 11e-3;
n_yz = n_zx;
delta_z = 0.2;

ACDC_X = (alpha_x+beta_x*S)/(1+S+(z/z_x)^n_zx)-x;
ACDC_Y = (alpha_y+beta_y*S)/(1+S+(x/x_y)^n_xy)-delta_y*y;
ACDC_Z = 1/(1+(x/x_z)^n_xz+(y/y_z)^n_yz)-delta_z*z;
ACDCsys_div = [ ACDC_X, ACDC_Y, ACDC_Z ];

J = jacobian(ACDCsys_div,[x;y;z]);

Jsolnew(x,y,z,S) = [J];

%%Construction of the coordinates as a matrix

A = load('matlab.mat','unnamed');% import data from directory
a2 = struct2array(A);% coordinates of the equilibrium point.
numofGraphs = 80;
bx = length(a2(1,1:numofGraphs));

%% Construction of the heatmaps
figure;
hmapax = ceil(sqrt(bx));

for kk = 1:bx %bnx %All bin windows = iteration  
  JacACDCnew(:,:,kk) = Jsolnew(a2(1,kk),a2(2,kk),a2(3,kk),a2(4,kk));    
  ACDC_HmapJnew = double(JacACDCnew(:,:,kk));
  subplot(hmapax,hmapax,kk);%
  heatmap(var,var,ACDC_HmapJnew,'ColorScaling','log');
  S = a2(4,kk);
  title(['Jac','s=',num2str(S)]);
end

person JuanMuñoz    schedule 14.05.2019    source источник
comment
Я думаю, это можно сделать с помощью getframe. Просто убедитесь, что вы каждый раз передаете другой дескриптор оси (т.е. идентификатор подграфика) в getframe.   -  person Dev-iL    schedule 14.05.2019
comment
Этот ответ на Экспорт фильма из Matlab показывает вам больше. (Используйте частоту кадров = 2)   -  person ErikP    schedule 14.05.2019


Ответы (1)


Рассмотрим следующий пример:

function q56130816
% Load some data:
frames = imread('https://i.stack.imgur.com/03kN8.gif');
frames(frames > 1) = 2;

% Create subplots:
figure('WindowState','maximized'); subplot(2,4,1);
for ind1 = 1:8
  subplot(2,4,ind1);
  imagesc(frames(:,:,1,ind1)); axis image; axis off;
end
colormap([255 255 255; 188 188 188; 244 128 36]./255);

% Capture subplots as frames:
for ind1 = 8:-1:1
  frameHolder(ind1) = getframe( subplot(2, 4 ,ind1) );
end

% Play as movie:
hF = figure(); movie(hF, frameHolder, 20, 2);

Что обернется:

набор подзаговоров

В:

анимация

Как видите, в приведенном выше примере я использовал getframe, но кадры также можно захватывать с помощью print, как указано в getframeдокументы. Кадры также можно экспортировать в видеофайл, как описано здесь.

Анимация предоставлена: кадры взяты из примера Codepen Йохана Линделла.

person Dev-iL    schedule 14.05.2019