Select 100 points either side from mouse click cooradinates

조회 수: 1 (최근 30일)
Kurni Eswar
Kurni Eswar 2019년 6월 13일
답변: Rik 2019년 6월 13일
Need help!!
I have a line graph. I would like to get 100 points either side of the plot from mouse click coordinate.
I was looking at bsxfun fucntion
bsxfun(@plus,xcoods(:,2),-100:100) Can be used ?
I am using 2016a matlab version
  댓글 수: 4
Adam
Adam 2019년 6월 13일
편집: Adam 2019년 6월 13일
What is wrong with the simplest possible answer:
xCoord + ( -100:100 );
? You can just repmat the y coordinate 201 times.
Kurni Eswar
Kurni Eswar 2019년 6월 13일
It works
Thanks

댓글을 달려면 로그인하십시오.

답변 (2개)

KSSV
KSSV 2019년 6월 13일
x = linspace(0,1) ;
y = sqrt(x) ;
% Mid point
M = [mean(x) mean(y)] ;
% points left side
idx1 = x<M(1) ;
% % points right side
idx2 = x>M(1) ;
figure
hold on
plot(x,y,'r') ;
plot(x(idx1),y(idx1),'.b')
plot(x(idx2),y(idx2),'.g')
legend('data','left points','right points')

Rik
Rik 2019년 6월 13일
Use the x-coordinate returned by getpts to select the data.
x=linspace(0,10,1000);
%generate a smooth random curve
y=sin(x)+polyval([0.01 0.1 1 10].*rand(1,4),x);
figure(1),clf(1)%only use clf during debugging
plot(x,y,'b','DisplayName','Data')
[xp,yp]=getpts;
if numel(xp)<1
clc,error('no points selected')
else
xp=xp(1);
end
pos_left=find(x<xp,100,'last');%might not return 100 points
pos_right=find(x>xp,100,'first');%might not return 100 points
hold on
plot(x(pos_left),y(pos_left),'.r','DisplayName','Left of click')
plot(x(pos_right),y(pos_right),'.g','DisplayName','Left of click')
hold off
legend

카테고리

Help CenterFile Exchange에서 Line Plots에 대해 자세히 알아보기

태그

아직 태그를 입력하지 않았습니다.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by