Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

To resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

Logic issues for creating a random walk

Asked by Andy on 23 Apr 2013

I have a set of random points plotted. I want to create a random walk between all of these plotted points so they are all visited once and only once. Then i will want to repeat many more random walks to find the best solution.

I am struggling with the logic needed to plot lines between my points and make sure they are only visited once. So any help with that would be appreciated, the rest i can work out.

1 Comment

Andy on 23 Apr 2013

I have this so far to try and get my plotting correct.

xCor = rand(1,10)
yCor = rand(1,10)
Cor = [xCor; yCor]
subplot(1,1,1);
plot(xCor,yCor,'r.','MarkerSize',20)
c = randperm(10,10)
x1 = Cor(1,c(1))
y1 = Cor(2,c(1))
x2 = Cor(1,c(2))
y2 = Cor(2,c(2))
hold on;
plot([x1 y1],[x2,y2])

I create my Coordinate set Cor and plot the individual x and y points. I then create a random permutation so that i can select random Columns from Cor. When the numbers are printed out for x1, y1 etc . . they all match with the numbers in Cor and the numbers that were plotted but the plotted line does not relate to any points on my figure . . .despite having the same co ordinates.

Andy

Products

No products are associated with this question.

1 Answer

Answer by Iman Ansari on 23 Apr 2013
Edited by Iman Ansari on 23 Apr 2013
Accepted answer

Hi.

plot([x1 x2],[y1,y2])

For all lines:

xCor = rand(1,10)
yCor = rand(1,10)
Cor = [xCor; yCor]
subplot(1,1,1);
plot(xCor,yCor,'r.','MarkerSize',20)
c = randperm(10,10)
x1 = Cor(1,c(1:9))
y1 = Cor(2,c(1:9))
x2 = Cor(1,c(2:10))
y2 = Cor(2,c(2:10))
hold on;
plot([x1;x2],[y1;y2])

1 Comment

Andy on 23 Apr 2013

Thank you, my problem seemed to be i was plotting x1 y1 x2 y2 instead if x1 x2 y1 y2. Your answer also simplifies mine with the colon instead of a loop which is great.

Iman Ansari

Contact us