2

グラフィックがあります。ユーザーは選択したポイントを削除できます。

ユーザーが削除したポイントを正確に知るにはどうすればよいですか?「削除済み」とは、「ブラシ/ツールの選択」などのMATLABツールを使用して、[削除]ボタンをクリックすることを意味します。

4

1 に答える 1

3

x最初にプロットされたデータとデータを保存すると、ユーザーがポイントを削除した後y、残りのデータ'XData'または'YData'プロット内のデータと比較して、削除されたポイントを判別できます。

x = 1:10;           %# The initial x data
y = rand(1,10);     %# The initial y data
hLine = plot(x,y);  %# Plot the data, saving a handle to the plotted line
%# ...
%# The user deletes two points here
%# ...
xRemaining = get(hLine,'XData');  %# Get the x data remaining in the plot
yRemaining = get(hLine,'YData');  %# Get the y data remaining in the plot

コメントで、RR間隔をプロットしていると述べたので、xデータは、値が繰り返されない、単調に増加する時点のベクトルである必要があります。そのため、次の手順を実行することで、削除されたポイントを見つけることができます。

removedIndex = ~ismember(x,xRemaining);  %# Get a logical index of the points
                                         %#   removed from x

これにより、削除されたポイントの場合は1、まだ存在しているポイントの場合は0の論理インデックスが得られます。ユーザーによって削除された隣接ポイントが2つしかない場合(説明したように、確認するためにいくつかのチェックを行う必要がある場合もあります)、次のようにこれら2つのポイントを平均値に簡単に置き換えることができます。

index = find(removedIndex);  %# Get the indices from the logical vector
xNew = [x(1:index(1)-1) mean(x(index)) x(index(2)+1:end)];  %# New x vector
yNew = [y(1:index(1)-1) mean(y(index)) y(index(2)+1:end)];  %# New y vector

そして、それに応じてプロットを更新できます。

set(hLine,'XData',xNew,'YData',yNew);
于 2010-12-17T19:13:07.727 に答える