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