我试着查看以下选项。
numpy.random.lognormal(0,2,600) - 我对这种方法的怀疑是输入参数是dB吗?如果是,则mu = 0,sigma = 2.如果输入参数应该是线性值,则输入参数应为mu = 1,sigma = 10 ^ 0.2。另一个问题是,得到的随机值是线性还是dB?如果它们是线性的,我需要获取这些值的10 * math.log10()。
http://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.random.lognormal.html中的文档没有提供有关输入参数是线性的还是以dB为单位的任何信息,也没有提供有关输出结果性质的任何信息。
答案 0 :(得分:2)
如果x
是正态分布的,则log(x)
将正常分发。如果您不确定参数的参考,那么您可以绘制一些样本,记录它们,然后计算平均值和标准偏差:
import numpy as np
np.random.seed(0)
mu, sigma = 1, 2
x = np.random.lognormal(mu, sigma, 10000)
logx = np.log(x)
print(logx.mean(), logx.std())
# 0.963132559683 1.97511313635
因此np.random.lognormal(mu, sigma, ...)
从随机变量中抽取样本,该变量的对数通常以均值mu
和标准差sigma
分布。换句话说,如果以对数单位指定mu
和sigma
,则样本将采用线性单位。