Random points between lines
古いコメントを表示
Can anyone tell me how can I go about plotting random points between two straight lines?
採用された回答
その他の回答 (5 件)
utsav kakkad
2019 年 3 月 4 日
0 投票
1 件のコメント
Image Analyst
2019 年 3 月 4 日
Set b = 0, then have the slopes m be arctand(0), arctand(15), arctand(30), arctan(45), arctan(60), arctand(75), and then you'll have to handle the 90 degree situation specially. Not hard - you're a smart engineer so I'm sure you can handle it.
utsav kakkad
2019 年 3 月 7 日
0 投票
3 件のコメント
Image Analyst
2019 年 3 月 7 日
Not sure where I was referring to that, but the intercept is where the line crosses the Y axis, just like usual.
utsav kakkad
2019 年 3 月 7 日
編集済み: Image Analyst
2019 年 3 月 9 日
Image Analyst
2019 年 3 月 9 日
When I run your code I don't get an error - I get this plot:

utsav kakkad
2019 年 3 月 10 日
編集済み: utsav kakkad
2019 年 3 月 10 日
0 投票
1 件のコメント
Image Analyst
2019 年 3 月 10 日
Not sure what form you're looking for but this just looks like uniformly distributed points with lines drawn through them every 15 degrees. So you can make data like this
x = rand(1, 58);
y = rand(1, 58);
Then you can make 7 lines knowing the slopes of the lines
angles = [0, 15, 30, 45, 60, 75, 90]
slopes = atand(angles);
What more do you want, if anything?
utsav kakkad
2019 年 3 月 10 日
編集済み: utsav kakkad
2019 年 3 月 10 日
0 投票
Image Analyst
2019 年 3 月 10 日
Try this:
clc; % Clear the command window.
close all; % Close all figures (except those of imtool.)
clear; % Erase all existing variables. Or clearvars if you want.
workspace; % Make sure the workspace panel is showing.
format long g;
format compact;
fontSize = 20;
numPointsPerSector = 125;
numTrialPoints = numPointsPerSector * 6 * 10000; % Way more than enough.
% Define box
xMax = 10;
yMax = 10;
x = xMax * rand(1, numTrialPoints);
y = yMax * rand(1, numTrialPoints);
% Get angles for each point
angles = atan2d(y, x);
sectorAngleBoundaries = [0, 15, 30, 45, 60, 75, 90];
for k = 2 : length(sectorAngleBoundaries)
% Get acceptable indexes
mask = find(angles >= sectorAngleBoundaries(k-1) & angles <= sectorAngleBoundaries(k) & ...
x < xMax & y < yMax);
% Extract the prescribed number out of the masked array.
okIndexes = mask(1:numPointsPerSector);
% Store x and y into array.
thisX = x(okIndexes(1:numPointsPerSector));
thisY = y(okIndexes(1:numPointsPerSector));
plot(thisX, thisY, '.', 'MarkerSize', 13);
hold on;
% Draw lines
xLine1 = 2 * xMax * cosd(sectorAngleBoundaries(k-1));
xLine2 = 2 * xMax * cosd(sectorAngleBoundaries(k));
yLine1 = 2 * yMax * sind(sectorAngleBoundaries(k-1));
yLine2 = 2 * yMax * sind(sectorAngleBoundaries(k));
line([0, xLine1], [0, yLine1], 'Color', 'k');
line([0, xLine2], [0, yLine2], 'Color', 'k');
end
grid on;
xlim([0, xMax]);
ylim([0, yMax]);
xlabel('X', 'FontSize', fontSize);
ylabel('Y', 'FontSize', fontSize);
caption = sprintf('%d points per sector', numPointsPerSector);
title(caption, 'FontSize', fontSize);
axis square;

Probably a better way is to adapt the code in the FAQ: https://matlab.fandom.com/wiki/FAQ#How_do_I_create_a_set_of_random_locations_within_a_circle.3F
カテゴリ
ヘルプ センター および File Exchange で Mathematics についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



