【问题标题】:Uniformly distributed points in 2D二维均匀分布的点
【发布时间】:2016-12-08 13:03:40
【问题描述】:

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

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

【问题讨论】:

  • 为什么(x,y)不统一?
  • 如何加载图片?我运行这段代码,我看到点不统一
  • 您可以将图片上传到imgur,并在此处发布图片链接。
  • 什么是N?对于小的N,由于采样效应,数据可能出现不均匀,但N-->\inf (x,y) 均匀分布在[0,1]x[0,1] 域中。
  • 尝试增加N,你会发现点实际上是均匀的。

标签: matlab uniform


【解决方案1】:

您的代码确实对 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,'.');  

【讨论】:

  • 如果出现错误可能是因为您的随机数生成器是旧版生成器。尝试在代码开头运行rng('default')
  • 如果您输入edit unifrnd,您可以了解到unifrnd 在后台调用rand
【解决方案2】:

scatterhist() 函数可用于可视化边际分布以及相关结构。下面的图片和代码(使用@FranzHahn 的example)。

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

【讨论】:

    猜你喜欢
    • 2019-02-21
    • 1970-01-01
    • 1970-01-01
    • 2020-12-24
    • 1970-01-01
    • 2013-03-30
    • 1970-01-01
    • 2011-12-05
    • 2021-03-30
    相关资源
    最近更新 更多