2D中均匀分布的点

时间:2016-12-08 13:03:41

标签: matlab uniform

如何在二维中生成均匀分布的点? 我测试了这段代码,但我不想这样做,因为在此代码中xy是统一的,但(x,y)对并不统一。

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

2 个答案:

答案 0 :(得分:2)

您的代码会对2D空间进行统一采样。但是Matlab中还有unifrnd方法,可以对n-D空间进行采样。

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

答案 1 :(得分:1)

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')