データの変更後の自動的なプロットの更新
ワークスペース変数のデータをプロットする場合、プロットに含まれるのはその変数のコピーです。その結果、ワークスペース変数を (データの追加や削除などで) 変更しても、プロットは自動的に更新されません。プロットに変更を反映させたい場合は、再プロットしなければなりません。ただし、以下の手法のいずれかを使用することで、プロットが表現するワークスペース変数に、プロットをリンクできます。プロットとワークスペース変数をリンクした場合、データを一方の場所で変更すると、他方でも変更されます。
データ リンクを使用して、プロットをワークスペース変数にリンクします。
プロットされたオブジェクト (
XDataSource
プロパティなど) のデータ ソース プロパティをワークスペース変数の名前に設定します。次に、関数refreshdata
を呼び出して、データのプロパティを間接的に更新します。この手法を使用して、アニメーションを作成できます。
データ リンクを使用したプロットの更新
データ リンクは、プロットと、描写されたワークスペース変数を継続的に同期します。
たとえば、反復近似 pi
です。反復番号を表す変数 x
と近似を表す y
を作成します。x
と y
の初期値をプロットします。変数が変わったときにプロットが更新されるように、linkdata on
を使用してデータ リンクをオンにします。次に、for ループで x
と y
を更新します。プロットは 0.5 秒間隔で更新されます。
x = [1 2]; y = [4 4]; plot(x,y); xlim([0 100]) ylim([2.5 4]) xlabel('Iteration') ylabel('Approximation for \pi') linkdata on denom = 1; k = -1; for t = 3:100 denom = denom + 2; x(t) = t; y(t) = 4*(y(t-1)/4 + k/denom); k = -k; end
データ ソース プロパティを使用したプロットの更新
データ リンク機能を使用する代わりに、プロットされたオブジェクトのデータ ソース プロパティを設定することによって、プロットとワークスペース変数との同期を維持できます。この手法を使用して、アニメーションを作成できます。
たとえば、反復近似 pi
です。反復番号を表す変数 x2
と近似を表す y2
を作成します。x2
と y2
の初期値をプロットします。プロットされたオブジェクトのデータ ソース プロパティを 'x2'
および 'y2'
に設定することによって、プロットをワークスペース変数にリンクします。次に、for ループで x2
と y2
を更新します。更新されたデータに基づいてプロットを更新するために、各反復で refreshdata
と drawnow
を呼び出します。
x2 = [1 2]; y2 = [4 4]; p = plot(x2,y2); xlim([0 100]) ylim([2.5 4]) xlabel('Iteration') ylabel('Approximation for \pi') p.XDataSource = 'x2'; p.YDataSource = 'y2'; denom = 1; k = -1; for t = 3:100 denom = denom + 2; x2(t) = t; y2(t) = 4*(y2(t-1)/4 + k/denom); refreshdata drawnow k = -k; end
参考
linkdata
| brush
| refreshdata
| linkaxes