matlab图像在动画创建过程中弹出

时间:2017-01-06 17:36:23

标签: matlab animation

我会尽力解释我的问题。我正在模拟网络的动态,我希望得到一个动画,其中每个帧代表我的网络,每个节点相对于输入文件具有特定的颜色。 这是我的剧本

 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:我一直在编辑标题,因为主题似乎已经被问过......

1 个答案:

答案 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