2010-12-17 2 views

답변

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 

당신 RR 간격을 플로팅한다는 의견에서 언급 했으므로 x 데이터는 반복되는 값이없는 단조롭게 증가하는 시간의 벡터 여야합니다. 따라서, 당신은 다음을 수행하여 제거 된 점을 찾을 수 있습니다 : 이것은 아직 거기에 포인트 제거 된 점과 0으로 당신에게 logical index을 제공

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

. (당신이해야 할 몇 가지 검사를 수행 할 수 있지만 당신이 설명 참조) 사용자에 의해 제거 두 이웃 포인트가 있다면 다음과 같이, 당신은 쉽게 평균 값이 두 점을 대체 할 수

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 

그리고 그에 따라 플롯 업데이트 할 수 있습니다 : 내가 RR 간격 뷰어 프로그램을 쓰고 있어요

set(hLine,'XData',xNew,'YData',yNew); 
+0

을가 나는 사용자가이를 delets 2 점을 선택 "부드러운 삭제"를 추가하고 싶었 옵션이며, 이것의 중간에 라인 [A, B]는 A1 (x/2, y/2)와 같은 코드가있는 새로운 포인트로 나타납니다. 그러나 주된 문제점은 삭제 된 포인트의 코드를 얻는 것입니다 ... ( – AndrewShmig

+0

@Andrew : 어떻게 할 수 있는지 보여주십시오. – gnovice

관련 문제