I need x,y coordinates which are randomly generated between 1 to 400 for x coordinates and 1 to 100 for y coordinates, condition is minimum distance between coordinates is 10 and maximum distance is 20, distances should vary from 10 to 20? plz help

3 vues (au cours des 30 derniers jours)
clear all;
close all;
pointsToPlace = 30 ; % # of random coordinates we need to place
% Preallocate points
x = zeros(1, pointsToPlace);
y = zeros(1, pointsToPlace);
loopCounter = 1;
maxIterations = 200000; % Number of tries before giving up.
numberPlaced = 0; % No points placed yet.
while numberPlaced < pointsToPlace && loopCounter < maxIterations
% Get new coordinate
xProposed = round((10 + (50-1)*rand()),0); %% random X- coordinates
yProposed = round((10 + (50-1)*rand()),0); %% random Y- coordinates
if loopCounter == 1
% First one automatically gets added of course.
numberPlaced = 1;
x(numberPlaced) = xProposed;
y(numberPlaced) = yProposed;
else
% Compute distance to all prior coordinates.
distances = sqrt((xProposed-x(1:numberPlaced)).^2 +(yProposed-y(1:numberPlaced)).^2);
% If less than 20, add it
if min(distances > 8)
numberPlaced = numberPlaced + 1;
x(numberPlaced) = xProposed;
y(numberPlaced) = yProposed;
end
end
loopCounter = loopCounter + 1;
end
above code (not my code) generates coordinates at equal distances, in my case distances should vary

Réponse acceptée

Walter Roberson
Walter Roberson le 7 Jan 2019
change
if min(distances > 8)
to
mind = min(distances);
if mind >= 10 && mind <= 20

Plus de réponses (0)

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by