Select 100 points either side from mouse click cooradinates

Asked by Kurni Eswar

Kurni Eswar (view profile)

on 13 Jun 2019
Latest activity Answered by Rik

Rik (view profile)

on 13 Jun 2019
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

Show 1 older comment
Kurni Eswar

Kurni Eswar (view profile)

on 13 Jun 2019
Exactly, This is want I what

on 13 Jun 2019
What is wrong with the simplest possible answer:
xCoord + ( -100:100 );
? You can just repmat the y coordinate 201 times.
Kurni Eswar

on 13 Jun 2019
It works
Thanks

KSSV (view profile)

on 13 Jun 2019

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 (view profile)

on 13 Jun 2019

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