如何分析点的"嘈杂"
完成了fft(如果我们有兴趣,请参见前面的帖子!)并得到结果,这对我有帮助。想分析一个数组的噪声/尖峰度(实际上是一个vb.nre集合)。嗯,怎么解释...
当信号良好时,ftf功率结果是512个数据点(频率段),除了大约2或者3个阵列条目外,所有值均较低,并且相对于几乎空的段中的噪声值来说,是一个不错的范围(即峰值较高)因此,在绘制图表时,这几个存储桶中的值有一个很大的峰值。
当信号较差/嘈杂时,数据值扩展(最大值到最小值)会很低,并且在更多存储桶中会成比例地出现更高的噪声。
分析该数据集的噪声有什么好处,而无需进行计算密集型工作?某种统计方法,标准偏差或者其他方法会有所帮助吗?
解决方案
计算信噪比
http://en.wikipedia.org/wiki/Signal-to-noise_ratio
我们还可以检查每个点的stdev,如果我们选择的水平在某个水平以下,则信号是好的,否则不是。
关键是要定义什么是噪声和什么是信号,必须对其进行建模假设。通常假设是由白噪声(每个频带的恒定功率)或者某些其他功率谱的噪声构成的,并且该模型适合于数据。然后可以使用信噪比来测量噪声量。
拟合噪声模型取决于数据的性质:如果我们知道真实信号在高频分量中将没有功率,则可以在那里寻找噪声水平的指示,并使用该模型预测噪声的大小将在同时存在信号和噪声的较低频率分量处。另外,如果信号在时间上是恒定的,则在不同的时间点进行多次FFT并比较它们以获得每个频带的标准偏差,可以得出存在的噪声水平。
我希望我不要让我们提起执行FFT时窗口功能固有的问题:这些功能可能会在频谱中引入杂散的"噪声",实际上这是FFT周期性性质的产物。 www.ee.iitm.ac.in/~nitin/_media/ee462/fftwindows.pdf在尖峰和更多"边带"噪声之间需要权衡
计算标准偏差,然后确定将指示噪声的阈值。在实践中,这通常很容易,并且可以让我们根据需要轻松调整"噪声级别"。
Knuth中有一个不错的单程stddev算法。这里是描述实现的链接。
标准偏差
wouldn't the spike be treated as a noise glitch in SNR, an outlier to be discarded, as it were?
如果从时域数据中清楚地看到有这样的尖峰,那么它们肯定会在频谱中产生很多噪声。选择忽略它们是一个好主意,但是不幸的是,FFT无法接受其中去除了尖峰的带有"空洞"的数据。有两种方法可以解决此问题。 "肮脏技巧"方法是将异常值样本设置为任一站点上两个样本的平均值,然后使用全套数据计算FFT。
较难但更正确的方法是使用Lomb规范化的周期图(请参阅W.H.Press等人的《数字食谱》一书),其功能与FFT类似,但可以正确处理丢失的数据。