2008-09-30 49 views
2

已完成fft(如果您有興趣,請參閱前面的文章!)並獲得了一個結果,這對我有所幫助。想分析一個數組的嘈雜/刺耳(實際上是一個單一的vb.nre集合)。嗯,如何解釋...如何分析一組點的「噪音」

當信號良好時,fft功耗結果是512個數據點(頻率桶),除了可能有2或3個陣列條目的值較低,並且體面範圍(即峯值爲當信號很差/有噪聲時,數據值擴展(最大值到最小值)當信號很差/有噪聲時,數據值擴展(最大值到最小值)是很低的,並且在更多的桶中有相對較高的噪音。

什麼是好的,計算上不密集的是分析這個數據集的噪音?某種統計方法,標準差或某種幫助?

回答

1

關鍵在於定義什麼是噪聲和什麼是信號,對此必須進行建模假設。通常假設是由白噪聲(每頻段的恆功率)或某些其他功率譜的噪聲組成的,並且該模型適合數據。然後可以使用信噪比來測量噪聲量。

擬合噪聲模型取決於數據的性質:如果您知道實際信號在高頻分量中沒有功率,那麼您可以在那裏查看噪聲水平的指示,並使用該模型預測信號和噪聲兩者的較低頻率分量處的噪聲。另外,如果你的信號在時間上是恆定的,那麼在不同時間點上進行多次FFT並比較它們得到每個頻段的標準偏差可以給出噪聲級別。

我希望我不會光顧你提到執行FFT時窗口函數固有的問題:它們可能會將雜散「噪聲」引入到頻譜中,這實際上是一種週期性的人工產物FFT。在獲得尖銳的峯值和「邊帶」噪聲之間進行權衡 - 更多此處www.ee.iitm.ac.in/~nitin/_media/ee462/fftwindows.pdf

1

計算標準偏差,然後確定指示噪聲的閾值。在實踐中,這通常很容易,並允許您根據需要輕鬆調整「噪音級別」。

Knuth中有一個很好的單通stddev算法。這裏是描述實現的鏈接。

Standard Deviation

0

不會尖峯是 作爲SNR的噪聲毛刺處理,一個 離羣被丟棄,因爲它是?

如果從時域數據可以看出有這樣的尖峯,那麼它們肯定會在頻譜中產生很多噪聲。選擇忽略它們是一個好主意,但不幸的是,FFT不能接受尖峯已被去除的「漏洞」數據。有兩種技術可以解決這個問題。「髒技巧」方法是將異常值樣本設置爲任一站點上的兩個樣本的平均值,並用全套數據計算FFT。

更難但更正確的方法是使用Lomb標準化週期圖(參見W.H.Press等人的書'Numerical Recipes'),它與FFT做類似的工作,但可以正確處理丟失的數據。

+0

不,這是相反的 - 很少,大尖刺是件好事!對於給定的頻率,尖峯在fft桶中的值很高。它很嘈雜,很多尖峯數據表明樣本不好。 – 2008-09-30 14:50:02