## Select 100 points either side from mouse click cooradinates

on 13 Jun 2019

### 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