我需要在matlab中绘制一个圆并标记其中心并在圆内生成一个随机坐标和该坐标的负数并测量这两个点之间的距离 我试过这个
x = linspace(-sqrt(10),sqrt(10));
y1 = sqrt(10-x.^2);
y2 = -sqrt(10-x.^2);
plot(x,y1,x,y2)
axis equal
制作圆圈和它的确定,但我不知道如何继续生成随机坐标ad其负面并测量它们之间的距离
答案 0 :(得分:0)
您可以使用rand()函数生成与中心的随机距离,以及生成随机角度。然后,您可以转换为x,y坐标,并取消它们以获得负坐标。最后,您可以使用距离公式计算两个坐标之间的距离。以下是一些示例代码:
x = linspace(-sqrt(10),sqrt(10));
y1 = sqrt(10-x.^2);
y2 = -sqrt(10-x.^2);
plot(x,y1,x,y2)
axis equal
hold on
r_max = sqrt(10); %set to radius of circle
r = rand(1)*r_max; %produces a random vector whose length is <=radius
theta = rand(1)*2*pi; % produces a random angle
x_coord = r*cos(theta); %calculate x coord
y_coord = r*sin(theta); % calculate y coord
x_coord_neg = -1*x_coord; % negate x coord
y_coord_neg = -1*y_coord; % negate y coord
plot(x_coord,y_coord, 'x')
plot(x_coord_neg,y_coord_neg, 'rx')
dist = sqrt((x_coord - x_coord_neg)^2 + (y_coord - y_coord_neg)^2) % calculate distance
不确定你是否真的需要&#34;负坐标&#34;或坐标的复共轭。在后者的情况下,你只是否定y来得到复共轭。
答案 1 :(得分:0)
将此添加到您的代码中 -
%%// Choose from 100 random point pairs
N = 100;
%%// Radius of circle
radius = sqrt(10);
%%// Create a random point matrix Nx2
pt1 = [ radius*2*(rand(N,1)-0.5) radius*2*(rand(N,1)-0.5)];
%%// Select the first pair that lies inside circle
pt1 = pt1(find(sqrt( pt1(:,1).^2 + pt1(:,2).^2 )<radius,1),:);
%%// Negative of the point, i.e. on the other side of the center of the circle but equidistant from the center
pt2 = -pt1;
%%// Distance between the two points
dist1 = sqrt((pt1(1)-pt2(1)).^2 + (pt1(2)-pt2(2)).^2);
%%// Overlay the center and the two points on the circle plot
hold on
text(0,0,'C') %%// Center
text(pt1(1),pt1(2),'P') %%// First point
text(pt2(1),pt2(2),'MP') %%// Second point (Mirror Point, MP)
<强>剧情强>