我有一个强度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与第二时刻的平方根进行比较,它们应该彼此相似,非常相似,因此您选择其中哪一个作为噪声值应该无关紧要
- 信噪比的部分在你的推导中是错误的。信号就是信号,也就是说,它是从拟合中获得的高斯的振幅。您可以将其除以噪声级别(二阶矩的平方根或stddev(。在我看来,你应该得到一个介于2到10之间的值
- 最后,请记住,这是一个公共论坛,有些人读了它,可能会对这个问题感到困惑;答案:两者都是基于上一个问题将数据拟合为高斯分布图,这应该在问题本身中提及
- 如果这是一项大学作业,并且你在研究真实的实验数据,请记住目的。想象一下,你自己是一个科学家,要说服其他人,这是一个真实的信号,比如说,来自外星人,而不仅仅是大自然母亲随机掷骰子的不稳定结果。这就是信噪比的主要目的