필터 지우기
필터 지우기

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

조회 수: 1 (최근 30일)
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

채택된 답변

Walter Roberson
Walter Roberson 2019년 1월 7일
change
if min(distances > 8)
to
mind = min(distances);
if mind >= 10 && mind <= 20

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by