-1

次のコードがあります。

figure;
contour(X1,X2,f);

hold on

plot(top(1:size(top,1)), 'rx');

編集

    figure;
for i = 1: G
    contour(X1,X2,f);

    hold on

    plot(top(1:size(top,1)), 'rx');
end

注: G は最大世代です。これは、選択された個体を重ね合わせた球の等高線をプロットすることになっています。個体の反復ごとに、最良の個体が選択され、グローバルな最適値に到達するまで継続されます。以下に示すように、これをムービー形式で表示する必要があります。 スライド 1 スライド 1![][1] スライド3 スライド4 スライド5 スライド 6 スライド 7

反復の各段階を実行すると、添付のスライドに示されます。これが私がやろうとしていることです。何かアイデアはありますか?

4

1 に答える 1

0

わかりました、今ここからコピーして貼り付けています。FrameRateただし、後で使用する(または尋ねる)可能性があるため、(1秒あたり)を追加しました。

writerObj = VideoWriter('Your_video.avi');
writerObj .FrameRate = 1; % 1 frames per second animation.
open(writerObj);

fig_h = figure;
for i = 1: G
    contour(X1,X2,f);
    hold on
    plot(top(1:size(top,1)), 'rx');

    frame = getframe(fig_h); % or frame = getframe; since getframe gets gcf.
    writeVideo(writerObj, frame);
end

close(writerObj);

これYour_video.aviで、作業ディレクトリにファイルが作成されます。


が matlab でサポートされていない場合は、この回答 (またはここの数学ドキュメントの例)に記載されているものと同じものを次のようにVideoWriter使用できます。avifile

aviobj = avifile('Your_video.avi','compression','None', 'fps', 1);

fig_h = figure;
for i = 1:G
    contour(X1,X2,f);
    hold on
    plot(top(1:size(top,1)), 'rx');

    frame = getframe(fig_h); % or frame = getframe; since getframe gets gcf.
    aviobj = addframe(aviobj, frame);
end

aviobj = close(aviobj);

編集

この質問でも指摘されているように、キャプチャされたフレームが一定の画像であるという問題が発生する可能性があります。Windows で Matlab を実行している場合、この問題は Windows と特定のグラフィックス ドライバーの組み合わせが原因である可能性があり、この回答で説明されているように解決される可能性があります。

于 2013-06-02T00:17:56.270 に答える