我会尽力解释我的问题。我正在模拟网络的动态,我希望得到一个动画,其中每个帧代表我的网络,每个节点相对于输入文件具有特定的颜色。 这是我的剧本
for ii=1:Movie_size
hfig=figure('visible','off');
hold on;
%plot edges
for kk=1:Nedge,
plot(xedge(kk,:),yedge(kk,:),'black')
end
%color of the nodes
for kk=1:nodes,
val=(1-(Color_node(12798 ,kk)-umin)/(umax-umin));
ggCol(kk,:)=[1,val,1-val];
end
%enhanced the contrast of the figure
ggCol = imadjust(ggCol,[.2 .3 0; .6 .7 1],[]);
%plot nodes
for kk=1:nodes,
plot(xpos(kk),ypos(kk),'o','MarkerFaceColor',ggCol(kk,:), ...
'MarkerEdgeColor','k','MarkerSize',10)
end
frames(ii)=getframe(hfig);
hold off;
end
movie(frames);
我成功地绘制了每一帧,但是当我想要获得动画时,我显示了所有的数字并且没有电影。我尝试了很多不同的东西,但它永远不会有效......
PS:我一直在编辑标题,因为主题似乎已经被问过......
答案 0 :(得分:1)
虽然您已调用CREATE OR REPLACE FUNCTION "GerarTeste"()
RETURNS BOOL AS
$BODY$
DECLARE
inicio date;
fim date;
rResult record;
BEGIN
FOR rResult IN
SELECT DISTINCT lote
FROM fatura
ORDER BY lote
LOOP
SELECT
MIN(fatura.inicio) INTO inicio ,MAX(fatura.inicio) into fim
FROM fatura
WHERE lote = rResult.lote;
RAISE NOTICE '%',inicio;
END LOOP;
RETURN true;
END;
$BODY$
LANGUAGE 'plpgsql';
来获取当前数字的屏幕截图,但您需要使用此框架执行某些操作来制作电影。通常的做法是将此框架添加到循环中的现有VideoWriter
对象。
getframe
或者,您可以创建一个数组的帧,然后使用movie
在MATLAB中以交互方式显示这些帧。
writer = VideoWriter('output.avi');
hfig = figure();
hplot = plot(rand(10,1));
for k = 1:100
% Update the plot
set(hplot, 'YData', rand(10, 1));
% Take a screengrab and add it to the video file
frame = getframe(hfig);
writer.writeVideo(frame);
end
writer.close()
更新
根据您更新的问题,Windows 有可以弹出,因为for k = 1:100
frames(k) = getframe(hfig);
end
% View as a movie
movie(frames)
必须先渲染图形才能捕获屏幕。此外,您已创建了帧数组但未尝试显示电影。你需要:
getframe