问题描述
考虑以下对煤矿生产的煤的产热能力的测量(以百万卡路里/吨为单位):
6260、6130、6750、6370、6340、63212
为了生成测量的噪声,我使用了 Python 中的 numpy.random.normal(mean,stdefv,size)。为了在每次运行代码时获得相同的随机生成数字,我使用了 numpy.random.normal(seed)。
我使用以下方法计算信号:
信号 = 测量数据 + |噪声|
因此,SNR 是信号/噪声。
但是,我正在努力寻找合适的平均值和标准偏差,使每次测量的信噪比 (SNR) 为 100。我尝试调整平均值和标准偏差以获得每次测量所需的比率,但我得到的值要么小于 100,要么大于 100。
是否可以使用公式或方程式来获得所需的 SNR?
非常感谢您的帮助。非常感谢。
解决方法
当您从正态分布中提取噪声时,您每次都会得到不同的值,因此每次测量的 SNR 不可能相同,这也不是您在现实生活中会遇到的(除非在您的仪器可以测量的范围内具有恒定的信噪比)。
如果“每次测量的信噪比 (SNR) 为 100”,那么噪声不再是随机的,它完全由每次测量的信号决定,您可以以编程方式轻松添加(对于每次测量:Pnoise = Psignal / SNR)
您可能需要考虑的是测量的平均 SNR:
https://en.wikipedia.org/wiki/Signal-to-noise_ratio
- E[S^2] 代表信号的预期值
- E[N^2] 表示噪声平方标准偏差/方差
因此,如果您根据测量结果计算 E[S^2],则您有 E[N^2]=E[S^2] /SNR(插入您想要的任何 SNR)。然后,您可以从具有相应方差 (E[N^2]) 和均值 = 0(噪声的常见情况)的正态分布中采样噪声。每次测量的 SNR 都会有所不同,但总体而言,当您将所有测量的 SNR 平均时,您将获得所需的 SNR。