## Connecting dots with straight line in a loop.

### Tatte Berklee (view profile)

on 20 Oct 2019
Latest activity Answered by Image Analyst

### Image Analyst (view profile)

on 20 Oct 2019
Hi all,
I have a question regarding connecting the dots.
Suppose I have the following sample data points: I have a while-loop that identifies the first, second, and fourth points in the figure.
I know their index numbers and their (x,y) values.
Pictorially, I would like to connect with a straight line, the aforementioned points.
What is the best way of doing this?
My gut feeling is to input the "draw" code within the while-loop I have so each time I obtain the index of the next point I want to connect, I simply connect to that pictorially. But how to go about this?

R2019b

### darova (view profile)

on 20 Oct 2019

Just use plot function
plot(x(index),y(index))

Tatte Berklee

### Tatte Berklee (view profile)

on 20 Oct 2019
Hi! But how does the plot make the dots connect? Not only do I want the dots appear on the plot but also connect to the subsequent dot I obtain.
darova

### darova (view profile)

on 20 Oct 2019
If you have data (x,y) and it's order just use plot
x = rand(1,4);
y = rand(1,4);
index = [1 4 2 3];
plot(x(index),y(index))

### ABHILASH SINGH (view profile)

on 20 Oct 2019 ### Image Analyst (view profile)

on 20 Oct 2019

It seems that no one is exactly sure what you want to do, since the super obvious plot(x,y,'b-') doesn't seem to be it.
So I'll throw out a couple of guesses.
To close the figure (if that's what you want) you can tack the first point onto the array:
xp = [x, x(1)];
yp = [y, y(1)];
plot(xp, yp, 'b.-', 'LineWidth', 2, 'MarkerSize', 18);
grid on;
To make a bunch of points in between, you'd have to use polyfit and polyval() for each segment. Here it is for one segment with endpoints (x1, y1) and (x2, y2):
numNewPoints = 100; % Whatever you want.
newx = linspace(x1, x2, numNewPoints);
y = linspace(y1, y2, numNewPoints);
coefficients = polyfit([x1,x2], [y1, y2], 1);
newY = polyval(coefficients, newx);