繁体   English   中英

从Matlab到Python:矩形内具有高斯分布的N点

[英]From Matlab to Python: N point with Gaussian Distribution inside a rectangle

我用Matlab编写了这段代码,我正在寻找Python中的等效代码。 有人可以帮忙吗? 该代码将在具有高斯分布的边LxL的矩形内生成N个点。 从以下链接获得了代码: gaussian_inside_rectangle

function ans = randn_rect( N, sigma, L )
ans = zeros(0,2);
while size(ans,1) < N,
   pts = sigma * randn( ceil(1.25*(N-size(ans,1))), 2 );    
   pts = pts(all(abs(pts)<L/2,2),:);
   ans = [ ans ; pts ];
end
ans = ans(1:N,:);

因此,您要从截断的正态分布中采样N个二维点吗? 很高兴, scipy带有内置的那个

这将生成一个N * 2个numpy的阵列points与随机点:

from scipy.stats import truncnorm
import numpy as np

N = 1000
L = 5.0
mu = 4.0
sigma = 0.8

lower, upper = 0, L

X = truncnorm(
    (lower - mu) / sigma, (upper - mu) / sigma, loc=mu, scale=sigma)

points = np.reshape(X.rvs(2*N), (N, 2))

该代码是根据此答案改编而成的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM