私はこのようなことをしています:
a = [1:100];
for i=1:100,
plot([1:i], a(1:i));
end
私の問題は、ループが終了するまでプロットが表示されないことです。繰り返しごとにプロットを表示/更新するにはどうすればよいですか?
[〜#〜] drawnow [〜#〜] を使用します
a = [1:100];
for i=1:100,
plot([1:i], a(1:i));
drawnow
end
または、ファイル交換から [〜#〜] anymate [〜#〜] を確認することもできます。
アニメーションを保存せずに視覚化する場合、これを行う別の方法は、後続のプロットにrefreshdata
の代わりにplot
を使用することです。画面上で更新するには、drawnow
を呼び出す必要があります。
どちらかを使用する
_set(fig_handle,'XData',new_xdata_array)
set(fig_handle,'YData',new_ydata_array)
refreshdata
drawnow
_
または使用する
_set(fig_handle,'XDataSource',xdata_array)
set(fig_handle,'YDataSource',ydata_array)
%call this whenever xdata_array and ydata_array are assigned new values to see it updated in the plot
refreshdata
drawnow
_
たとえば、次のようになります。
_a=[1:100];
figure;
h=plot(1,a(1));
for i=2:100
set(h,'XData',[1:i])
set(h,'YData',a(1:i))
refreshdata
drawnow
end
_
単純なラインプロット(plot(); drawnow;
がよりシンプルで高速な場合)にはそれほど便利ではありませんが、複数のプロットタイプを含むより複雑な図を作成する必要がある場合に便利です。
t = 0:.01:2*pi;
x = cos(2*t).*(cos(t).^2);
y = sin(2*t).*(sin(t).^2);
comet(x,y);
Matlab
を使用すると、変数のループステートメントを並べ替えて自動化できます。
x = 0.0:0.1:2*pi
plot(x,cos(x));
例です......
多くの場合、実際にループ内にプロットする必要はありません