| Graphics | ![]() |
消去モード
MATLABがグラフィックスオブジェクトを再描画するために使う方法を選択することができます。MATLABがオブジェクトを再描画しなければならない原因の一つは、そのオブジェクトのプロパティを変更することです。この挙動を利用して、アニメーションシーケンスを作成することができます。典型的なシナリオは、あるグラフィックスオブジェクトを描画して、各ループの中で少しずつx-、y-、z-座標を設定し直すことによって、その位置を変更します。
異なる消去モードを選択することによって、様々な効果を生み出すことができます。この節では、ダイナミックな再描画に便利な3つのモードを使用する方法について説明します。
none - MATLABは、オブジェクトを移動するときにそれを消去しません。background - MATLABは、オブジェクトをバックグランドカラーで再描画することにより、それを消去します。このモードは、オブジェクトとその下のすべてのオブジェクト(グリッドラインなど)を消去します。xor - このモードは、オブジェクトのみを消去し、通常アニメーション用に使用します。これら3つのモードはすべて、MATLABが使用する通常モードよりも(精度は落ますが)高速です。
例題 - 消去モードを使ったアニメーション
3次元軌跡を時間的に観察することは、興味深く多くの情報が得られる場合がよくあります。この例は、Lorenzのストレンジアトラクタとして知られる、非線形微分方程式で記述されるカオス的な動作に関するものです。これは、ベクトル値関数 y(t)とyに依存する行列Aを使って、式
の形式で書くことができます。

解は2つの異なる点の回りを周回しますが、そのどちらにも固定されることはありません。この例は、もっとも単純な数値解法である固定刻みのEuler法による解で近似します。結果の精度はあまり高くありませんが、他の手法と同様に定性的な挙動を示します。
A = [ -8/3 0 0; 0 -10 10; 0 28 -1 ];
y = [35 -10 -7]';
h = 0.01;
p = plot3(y(1),y(2),y(3),'.', ...
'EraseMode','none','MarkerSize',5); % EraseModeをnoneに設定
axis([0 50 -25 25 -25 25])
hold on
for i=1:4000
A(1,3) = y(2);
A(3,1) = -y(2);
ydot = A*y;
y = y + h*ydot;
set(p,'XData',y(1),'YData',y(2),'ZData',y(3)) % 座標軸の変更
drawnow
i=i+1;
end
plot3ステートメントは、EraseModeをnoneに設定し、プロットを再描画するときにすでにプロットした点を消去しません。さらに、プロットオブジェクトのハンドル番号を保存します。for ループ内で、setステートメントはプロットオブジェクトを参照し、新しい位置に対して内部に格納された座標を変更します。本書ではダイナミックに展開する出力を示すことはできませんが、つぎの図はスタティックなスナップショットを示しています。
MATLABに関する限り、この例で作成したグラフには1つの点しか含まれていないことに注意してください。スクリーン上に見えるものは、MATLABが消去しないように指示した前ステップでのプロットの残像です。MATLABからこのグラフを印刷する唯一の方法は、スクリーンキャプチャを使うことです。Figureウインドウ内容をMATLABイメージとして作成するのに、captureコマンドを使います。
バックグランド消去モード EraseMode backgroundの効果を見るためには、以下のステートメントを前のプログラムに付加します。
p = plot3(y(1),y(2),y(3),'square', ...
'EraseMode','background','MarkerSize',10,...
'MarkerEdgeColor',[1 .7 .7],'MarkerFaceColor',[1 .7 .7]);
for i=1:4000
A(1,3) = y(2);
A(3,1) = -y(2);
ydot = A*y;
y = y + h*ydot;
set(p,'XData',y(1),'YData',y(2),'ZData',y(3))
drawnow
i=i+1;
end
hold off
holdが、onの状態なので、このコードはEraseModeプロパティをbackgroundに設定し、マーカを"pink eraser"(ピンク色の方形マーカ)に変更することによって、前に作成したグラフを消去します。
Xor消去モード 最初のplot3ステートメントのEraseModeをnoneからxorに変更すると、移動する点(Marker '.')のみが表示されます。Xorモードは、前のグラフィックスの残像をスクリーン上に残したくないアニメーション等を作成するのに使用します。
もう一つの例
MATLABのデモプログラム lorenzは、より正確な数値近似とLorenzのストレンジアトラクタのより精巧な表示を可能にします。他のMATLABデモには、アニメーション技法を示すものもあります。
| 例題 - FFTをムービーとして可視化 | フォーマット付きグラフ | ![]() |