二维平面上均匀分布的点

3

我该如何在二维平面上生成均匀分布的点?我测试了这段代码,但是我不想用它,因为在这段代码中,xy 是均匀的,但是 (x,y) 这对坐标并不均匀。

X=rand(2,N);
x= X(1,:);
y=X(2,:);
figure;                                     
plot(x,y,'.');                              

2
为什么(x,y)不均匀? - Shai
如何加载图片?我运行了这段代码,发现点不均匀。 - Simin Soleymanpour
你可以将图片上传到imgur,然后在这里贴上图片的链接。 - Shai
1
N是什么?对于小的N,由于采样效应,数据可能会表现出不均匀性,但随着N-->\inf(x,y)[0,1]x[0,1]域上均匀分布。 - Shai
在我的代码中,N=50。 - Simin Soleymanpour
1
尝试增加N,你会发现点实际上是均匀的。 - user2261062
2个回答

4

您的代码确实可以对二维空间进行均匀采样。但是在Matlab中,还有一种名为unifrnd的方法,可以对n维空间进行采样。

N = 5000;
rng(320);
X=rand(2,N);
x=X(1,:);
y=X(2,:);
figure('Position',[125 125 1200 500]);                                     
subplot(1,2,1)
plot(x,y,'.');  

rng(320);
X2 = unifrnd(0,1,2,N);
x=X(1,:);
y=X(2,:);
subplot(1,2,2)
plot(x,y,'.');  

Comparison of methods


如果出现错误,可能是因为您的随机数生成器是旧版生成器。请尝试在代码开头运行 rng('default') - user2261062
如果您键入 edit unifrnd,您可以了解到 unifrnd 在底层调用了 rand - Cris Luengo

2
scatterhist() 函数可用于可视化边缘分布以及相关结构。以下是图片和代码(使用 @FranzHahn 的 示例)。

Scatterhist

N = 5000;
rng(320);
X=rand(2,N);
x=X(1,:);
y=X(2,:);
figure('Position',[125 125 1200 500]);                                     
subplot(1,2,1)
plot(x,y,'.');  

scatterhist(x,y,'Direction','out')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接