如何分析一系列点的“噪音”

时间:2008-09-30 12:31:37

标签: vb.net analysis fft noise

已经完成fft(如果你有兴趣,请参见之前的帖子!)并得到了一个结果,这对我很有帮助。想分析一个数组的噪音/尖峰(实际上是一个单独的vb.nre集合)。嗯,怎么解释......

当信号良好时,fft功率结果是512个数据点(频率桶),除了可能有2或3个阵列条目之外都有低值,并且有一个合适的范围(即峰值高,相对于噪声值几乎空洞的桶。所以当绘制图表时,我们在那些桶中的值有一个很好的大峰值。

当信号差/有噪声时,数据值传播(最大值到最小值)很低,并且在更多桶中存在比例更高的噪声。

什么是好的,计算上非密集的是分析这个数据集的噪音?某种统计方法,标准偏差或某些东西会有帮助吗?

4 个答案:

答案 0 :(得分:1)

关键是定义什么是噪声,什么是信号,必须对其进行建模假设。通常假设白噪声(每个频带的恒定功率)或某些其他功率谱的噪声,并且该模型适合于数据。然后可以使用信噪比来测量噪声量。

拟合噪声模型取决于数据的性质:如果您知道实际信号在高频分量中没有功率,您可以在那里查看噪声级别的指示,并使用该模型进行预测在有信号和噪声的较低频率分量处会产生什么噪声。或者,如果您的信号在时间上是恒定的,则在不同的时间点进行多次FFT并比较它们以获得每个频带的标准偏差可以给出存在的噪声水平。

我希望我没有光顾你在执行FFT时提到窗口函数固有的问题:这些可能会产生将杂散“噪声”引入频谱的效果,这实际上是一个周期性的人为因素。 FFT。获得尖峰和“边带”噪声之间需要权衡 - 更多www.ee.iitm.ac.in/~nitin/_media/ee462/fftwindows.pdf

答案 1 :(得分:1)

计算标准差,然后确定指示噪声的阈值。在实践中,这通常很容易,并允许您根据需要轻松调整“噪音水平”。

Knuth中有一个很好的单通道stddev算法。这是描述实现的链接。

Standard Deviation

答案 2 :(得分:0)

计算信噪比 http://en.wikipedia.org/wiki/Signal-to-noise_ratio

你也可以检查每个点的stdev,如果它在某个级别下你选择那么信号是好的,否则它不是。

答案 3 :(得分:0)

  

不会是尖峰   在SNR中被视为噪声干扰   要丢弃的异常值,原来是什么?

如果从时域数据中可以清楚地看到存在这样的尖峰,那么它们肯定会在频谱中产生大量噪声。选择忽略它们是一个好主意,但不幸的是,FFT不能接受带有“孔”的数据,其中尖峰已被移除。有两种方法可以解决这个问题。 “脏技巧”方法是将异常值样本设置为任一站点上两个样本的平均值,并使用一组完整数据计算FFT。

更难但更正确的方法是使用Lomb标准化周期图(参见WHPress等人的书“数字食谱”),它与FFT的工作类似,但可以正确处理缺失的数据。 / p>