已经完成了fft(如果您有兴趣,请参阅之前的帖子!)并得到了一个结果,这对我有帮助。想分析数组的嘈杂/尖锐度(实际上是单曲的 vb.nre 集合)。嗯,如何解释...
当信号良好时,fft功率结果为512个数据点(频率桶),除了2或3个阵列条目外,所有数据点的值都很低,并且范围不错(即峰值很高,相对于几乎空的桶中的噪声值。因此,当绘制图表时,这几个存储桶中的值有一个很好的大峰值。
当信号较差/嘈杂时,数据值传播(最大到最小)较低,并且在更多存储桶中存在成比例的较高噪声。
分析这个数据集的嘈杂性是一个好的、计算上非密集型的?某种统计方法,标准差或其他东西会有所帮助吗?
关键是定义什么是噪声,什么是信号,必须为此做出建模假设。通常假设白噪声(每个频段的恒定功率)或其他功率谱的噪声,并且该模型拟合到数据中。然后可以使用信噪比来测量噪声量。
拟合噪声模型取决于数据的性质:如果您知道实际信号在高频分量中没有功率,则可以在那里查找噪声水平的指示,并使用该模型预测同时存在信号和噪声的较低频率分量的噪声。或者,如果您的信号在时间上是恒定的,则在不同时间点获取多个FFT并进行比较以获得每个频段的标准偏差可以给出存在的噪声水平。
我希望我不是光顾你提到执行FFT时窗口函数固有的问题:这些问题可能会在频谱中引入杂散的"噪声",这实际上是FFT周期性的伪影。在获得尖锐的峰值和"边带"噪声之间有一个权衡 - 更多 www.ee.iitm.ac.in/~nitin/_media/ee462/fftwindows.pdf
计算一个标准偏差,然后确定指示噪声的阈值。在实践中,这通常很容易,并允许您根据需要轻松调整"噪音水平"。
在高德纳中有一个很好的单程标准dev算法。这是描述实现的链接。
标准差
计算信噪比http://en.wikipedia.org/wiki/Signal-to-noise_ratio
您还可以检查每个点的 STDEV,如果它低于您选择的某个级别,那么信号是好的,否则不是。
尖峰不是吗 在 SNR 中被视为噪声故障,一个 可以说是要丢弃的异常值?
如果从时域数据中可以清楚地看出存在这样的尖峰,那么它们肯定会在频谱中产生很多噪声。选择忽略它们是个好主意,但不幸的是,FFT 无法接受带有"漏洞"的数据,其中尖峰已被移除。有两种技术可以解决这个问题。"肮脏的伎俩"方法是将异常值样本设置为任一站点上两个样本的平均值,并使用完整的数据集计算FFT。
更难但更正确的方法是使用Lomb标准化周期图(参见W.H.Press等人的"Numerical Recipes"一书),它与FFT类似,但可以正确处理丢失的数据。