Main Content

データの変更後の自動的なプロットの更新

ワークスペース変数のデータをプロットする場合、プロットに含まれるのはその変数のコピーです。その結果、ワークスペース変数を (データの追加や削除などで) 変更しても、プロットは自動的に更新されません。プロットに変更を反映させたい場合は、再プロットしなければなりません。ただし、以下の手法のいずれかを使用することで、プロットが表現するワークスペース変数に、プロットをリンクできます。プロットとワークスペース変数をリンクした場合、データを一方の場所で変更すると、他方でも変更されます。

  • データ リンクを使用して、プロットをワークスペース変数にリンクします。

  • プロットされたオブジェクト (XDataSource プロパティなど) のデータ ソース プロパティをワークスペース変数の名前に設定します。次に、関数 refreshdata を呼び出して、データのプロパティを間接的に更新します。この手法を使用して、アニメーションを作成できます。

データ リンクを使用したプロットの更新

データ リンクは、プロットと、描写されたワークスペース変数を継続的に同期します。

たとえば、反復近似 pi です。反復番号を表す変数 x と近似を表す y を作成します。xy の初期値をプロットします。変数が変わったときにプロットが更新されるように、linkdata on を使用してデータ リンクをオンにします。次に、for ループで xy を更新します。プロットは 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

Line plot after animation

データ ソース プロパティを使用したプロットの更新

データ リンク機能を使用する代わりに、プロットされたオブジェクトのデータ ソース プロパティを設定することによって、プロットとワークスペース変数との同期を維持できます。この手法を使用して、アニメーションを作成できます。

たとえば、反復近似 pi です。反復番号を表す変数 x2 と近似を表す y2 を作成します。x2y2 の初期値をプロットします。プロットされたオブジェクトのデータ ソース プロパティを 'x2' および 'y2' に設定することによって、プロットをワークスペース変数にリンクします。次に、for ループで x2y2 を更新します。更新されたデータに基づいてプロットを更新するために、各反復で refreshdatadrawnow を呼び出します。

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

Line plot after animation

参考

| | |

関連するトピック