如何在MATLAB中控制点删除?

时间:2010-12-17 18:20:11

标签: matlab function graphics points

我有一些图形。用户可以删除任何选定的点。

我如何知道用户删除了哪些点? 删除"删除"我的意思是使用MATLAB工具,例如"画笔/选择工具"然后单击“删除”按钮。

1 个答案:

答案 0 :(得分:3)

如果您保存最初绘制的xy数据,则可以在用户删除点后将其与图表中剩余的'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

您在评论中提到您正在绘制R-R间隔,因此您的x数据应该是一个单调增加的时间点矢量,没有重复值。因此,您可以通过执行以下操作找到已删除的点:

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

这会为logical index提供已删除点数的{{3}}和仍然存在的点数的零。如果用户只删除了两个相邻点(如您所述,尽管您可能需要进行一些检查以确定),您可以轻松地用平均值替换这两个点,如下所示:

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);