如何获得平均值为零且标准偏差为σ;=python中600个值的2 dB?

如何获得平均值为零且标准偏差为σ;=python中600个值的2 dB?,python,numpy,distribution,Python,Numpy,Distribution,我试着看看下面的选项 numpy.random.lognormal(0,2600)-我对这个方法的疑问是,输入参数是以dB为单位的吗?如果是,mu=0,sigma=2。如果输入参数假定为线性值,则输入参数应为mu=1,sigma=10^0.2。另一个问题是,产生的随机值是线性还是dB?如果它们是线性的,我需要取这些值的10*math.log10() 中的文档未提供任何关于输入参数为线性或dB的信息,也未提供任何关于输出结果性质的信息。如果x为对数正态分布,则log(x)将为正态分布。如果您不确定

我试着看看下面的选项

numpy.random.lognormal(0,2600)-我对这个方法的疑问是,输入参数是以dB为单位的吗?如果是,mu=0,sigma=2。如果输入参数假定为线性值,则输入参数应为mu=1,sigma=10^0.2。另一个问题是,产生的随机值是线性还是dB?如果它们是线性的,我需要取这些值的10*math.log10()


中的文档未提供任何关于输入参数为线性或dB的信息,也未提供任何关于输出结果性质的信息。

如果
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
以对数单位指定,则样本将以线性单位指定。

如果
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
以对数单位指定,那么样本将以线性单位指定。

您所说的对数值是自然对数,对吗?我说的是log10。那么,
log10(x)
也将是正态分布的,尽管具有不同的平均值和标准偏差。如果您想在log10单位中指定
mu
sigma
,那么您可以将
lognormal
参数从基数10转换为基数e(例如
mu/np.log10(np.e)
),或者只需使用这些参数从正态分布中采样并将10提高到该指数(例如
10**np.random.normal>)(μ,sigma,…)
)。您所说的对数值是自然对数,对吗?我说的是log10。那么,
log10(x)
也将是正态分布的,尽管具有不同的平均值和标准偏差。如果您想在log10单位中指定
mu
sigma
,那么您可以将
lognormal
参数从基数10转换为基数e(例如
mu/np.log10(np.e)
),或者只需使用这些参数从正态分布中采样并将10提高到该指数(例如
10**np.random.normal>)(mu,sigma,…)
)。