import sys
import os
import cv2
import math
import numpy as np
import random as rdm
def gen_gaussian_sample(n):
data = np.zeros([n*2,1])
for k in range(n):
u1 = rdm.random()
u2 = rdm.random()
r = math.sqrt(-2*math.log(u1))
data[k] = r * math.cos(2*3.14*u2)
data[k + n] = r * math.sin(2*3.14*u2)
return(data)
def do_stat(data):
N = data.size
s = data.sum()
d2 = data * data
s2 = d2.sum()
mean = s / N
var = s2 / N - mean ** 2
return((mean,var))
if __name__ == "__main__":
data = gen_gaussian_sample(10000)
(mean,var) = do_stat(data)
print mean
print var
radius = 510 / 3
width = (radius * 3) * 2 + 1 #3-sigma
height = 100
num = data.size
h = np.zeros([width,1])
for k in range(data.size):
d = int(data[k] * radius + width/2)
if d < 0:
d = 0
if d > width - 1:
d = width - 1
h[d] = h[d] + 1
with open("h.txt", "w") as file:
for k in h:
s = str(k) + "\n"
file.write(s)
norm = h.max()
img = np.zeros([height, width], np.uint8)
for col in range(width):
row = h[col] * (height - 1) / norm
row = int(height - 1 - row)
img[row,col] = 255
cv2.imshow("bmt", img)
cv2.waitKey(-1)
gausssian sampling
最新推荐文章于 2024-01-03 15:08:05 发布