我必須在MATLAB中創建公路場景。我必須在公路上生成隨機點(即車輛)。通過使用randn()命令,隨機點彼此重疊。我想生成隨機點,以保持隨機點之間的最小距離。生成N個隨機點,它們之間有一定的預定義距離
任何人可以幫助我產生這種情況的..
我必須在MATLAB中創建公路場景。我必須在公路上生成隨機點(即車輛)。通過使用randn()命令,隨機點彼此重疊。我想生成隨機點,以保持隨機點之間的最小距離。生成N個隨機點,它們之間有一定的預定義距離
任何人可以幫助我產生這種情況的..
這不是一個完美的解決方案,但它滿足你的最小距離限制。
% Highway dimensions
lx = 1000;
ly = 1000;
% Minimum distance
d = 100;
% Number of points to generate
n = 50;
points = [rand(1, 2) .* [lx ly]];
d2 = d^2;
% Keep adding points until we have n points.
while (size(points, 1) < n)
% Randomly generate a new point
point = rand(1, 2) .* [lx ly];
% Calculate squared distances to all other points
dist2 = sum((points - repmat(point, size(points, 1), 1)) .^ 2, 2);
% Only add this point if it is far enough away from all others.
if (all(dist2 > d2))
points = [points; point];
end
end
plot(points(:,1), points(:,2), 'o')
你可能會考慮泊松盤(又稱盤)採樣。基本上,泊松盤採樣產生的是緊密堆積的點,但彼此之間的距離不超過指定的最小距離,從而產生更自然的圖案。
我MATLAB是生鏽的,對不起,沒有代碼,但鏈接
對於R²,如果您想保持純粹的均勻分佈,我不知道任何比[拒絕抽樣](https://en.wikipedia.org/wiki/Rejection_sampling)更好的方法。是否需要統一分配?你的情況有多大?對於大型場景,拒收採樣可能會變慢。 – Daniel
情景:長度爲L的公路(L值可以從3000米到10,000米不等)。公路可以有多條車道。我必須在公路上隨機生成車輛,以保持兩輛車之間的最小距離。車輛數量從10輛到500輛不等。我認爲車輛將統一分配。如果我們可以使用其他的車輛配送,請告訴我。 – reena