그래픽이 있습니다. 사용자는 선택한 모든 점을 삭제할 수 있습니다.MATLAB에서 점 삭제를 제어하는 방법은 무엇입니까?
정확하게 사용자가 삭제 한 포인트를 어떻게 알 수 있습니까? "삭제됨"이란 "브러쉬/선택 도구"와 같은 MATLAB 도구를 사용한 다음 삭제 버튼을 클릭하는 것을 의미합니다.
그래픽이 있습니다. 사용자는 선택한 모든 점을 삭제할 수 있습니다.MATLAB에서 점 삭제를 제어하는 방법은 무엇입니까?
정확하게 사용자가 삭제 한 포인트를 어떻게 알 수 있습니까? "삭제됨"이란 "브러쉬/선택 도구"와 같은 MATLAB 도구를 사용한 다음 삭제 버튼을 클릭하는 것을 의미합니다.
처음 플롯 된 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
데이터는 반복되는 값이없는 단조롭게 증가하는 시간의 벡터 여야합니다. 따라서, 당신은 다음을 수행하여 제거 된 점을 찾을 수 있습니다 : 이것은 아직 거기에 포인트 제거 된 점과 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);
을가 나는 사용자가이를 delets 2 점을 선택 "부드러운 삭제"를 추가하고 싶었 옵션이며, 이것의 중간에 라인 [A, B]는 A1 (x/2, y/2)와 같은 코드가있는 새로운 포인트로 나타납니다. 그러나 주된 문제점은 삭제 된 포인트의 코드를 얻는 것입니다 ... ( – AndrewShmig
@Andrew : 어떻게 할 수 있는지 보여주십시오. – gnovice