在频谱中寻找 RMS 噪声

问题描述

我有一个强度 v/s 速度频谱,我的目标是在频谱中找到 RMS 噪声,不包括出现峰值的通道。

所以,经过一番研究,我开始知道RMS噪声与频谱的标准偏差相同,信号的信噪比是信号的平均值除以相同的标准偏差。有人能告诉我这里是不是我错了?

这就是我在python中编码的方式

def Average(data):
    return sum(data) / len(data)
average = Average(data)
print("Average of the list =",average)
standardDev = data.std()
print('The standard deviation is',standardDev)
SNR = average/standardDev
print('SNR = ',SNR)

我的原始数据点是:

x-axis(veLocity) :

 [-5.99999993e+04 -4.99999993e+04 -3.99999993e+04 -2.99999993e+04
 -1.99999993e+04 -9.99999934e+03  6.65010004e-04  1.00000007e+04
  2.00000007e+04  3.00000007e+04  4.00000007e+04  5.00000007e+04
  6.00000007e+04  7.00000007e+04  8.00000007e+04  9.00000007e+04
  1.00000001e+05  1.10000001e+05  1.20000001e+05  1.30000001e+05
  1.40000001e+05]

y-axis (data):

 [ 0.00056511 -0.00098584 -0.00325616 -0.00101042  0.00168894 -0.00097406
 -0.00134408  0.00128847 -0.00111633 -0.00151621  0.00299326  0.00916455
  0.00960554  0.00317363  0.00311124 -0.00080881  0.00215932  0.00596419
 -0.00192256 -0.00190138 -0.00013216]

如果我想测量不包括存在线的通道的标准偏差,我是否应该排除从 y[10] y[14] 的值,然后计算标准偏差?

解决方法

  1. 是的,由于您要确定噪声的某些属性,因此应排除不构成噪声的点。如果这些是第 10 到 14 点 - 排除它们。
  2. 然后计算剩余 y 值(强度)的平均值。但是,根据您的数据和拟合函数 a * exp(-(x-c)**2 / w),人们可能会推断出该平均值的理论值只是零。如果是这样,平均值只是验证您的实验/理论的一种手段(“我们已经获得了几乎为零,正如预期的那样)并使用 0 作为真正的平均值。那么,噪声水平将等于第二个的平方根时刻,E(Y^2)。
  3. 您应该将代码中的 stddev 与第二时刻的平方根进行比较,它们应该彼此相似,如此相似,以至于您选择其中的哪一个作为噪声值都无关紧要。立>
  4. 您推导的 SNR(信噪比)部分是错误的。信号就是信号,即 - 它是从拟合中获得的高斯幅度。您将其除以噪声级别(二阶矩的平方根或 stddev)。在我看来,您应该获得一个介于 2 和大约 10 之间的值。
  5. 最后,请记住这是一个公共论坛,有些人阅读了它并可能对问答感到困惑:两者都基于之前的问题 Fitting data to a gaussian profile,该问题本应在问题中提及
  6. 如果这是大学作业并且您处理的是真实的实验数据,请记住目的。想象一下自己是一名科学家,他要说服别人这是一个真实的信号,比如来自外星人,而不仅仅是大自然随机掷骰子的不稳定结果。这是信噪比的主要目的。