2015-06-17 214 views
0

我正在挖掘一些關於從C++中的IQ數據樣本中濾除噪聲的信息。C++ FIR噪聲濾波器

我已經瞭解到,這可以通過使用一個簡單的過濾器來完成,該過濾器計算最後幾個數據樣本的平均值並將其應用於當前樣本。

你對這種濾波有什麼進一步的經驗,或者你推薦使用一些現有的FIR濾波庫嗎?

感謝您的意見!

+0

您需要對噪音和信號的性質以及最終目標進行更具體的描述。 –

+0

我的工作與SDR無線電有關。我使用GNU無線電軟件通過我的加密狗捕獲所有類型的無線電信號(無論是調製)並將它們保存爲二進制文件。 包含IQ數據樣本的二進制文件不僅用作我的獨立軟件的輸入,它完成信號處理的其餘部分,並且應該能夠在發送期間過濾添加到信號中的噪聲。 –

+0

這聽起來像你需要先掌握一些基礎理論,然後再開始嘗試編寫任何代碼。我建議將問題提交到http://dsp.stackexchange.com,因爲它對於該網站更合適,並且您會在那裏獲得更好的答案。 –

回答

1

不幸的是,它不像「只得到一些圖書館,它會爲你做所有的工作」這麼簡單;數字濾波器是一個相當複雜的主題。

  1. 這是很容易的數字濾波器適用於您的數據只有當您的測量來在固定的時間間隔(被稱爲數字濾波器「採樣率」)。否則(如果時間間隔不同),應用數字濾波器並不重要(我懷疑你可能需要FFT來完成它,但我可能在這裏是錯誤的)。

  2. 數字濾波器(包括IIR和FIR)很有趣,因爲只要知道係數,就不需要庫,它很容易自己編寫(例如,請參見第一張圖: https://en.wikipedia.org/wiki/Finite_impulse_response:看起來很簡單吧?);它發現了棘手的係數。

  3. 作爲先決條件,找出係數,你需要了解了很多有關過濾器:你需要知道你需要什麼樣的過濾器(如果它是解調後 - 你可能需要低通,否則請參閱下面的MSalters的評論),您需要了解「轉角頻率」是什麼,並且您需要了解如何將這些頻率映射到您的樣品上(例如,您可以說您的樣品每秒都會出現一次 - 或者在任何時候其他費率,但這個選擇會影響你想要的「拐角頻率」)。只要您對「數字濾波器需要什麼」有所瞭解 - 找到係數非常簡單,您可以在MatLab中或在線計算器中使用它,在Google中查找「數字濾波器計算器」。

+0

感謝您的解釋:)我的接收端的採樣率始終是固定的。但是我將不得不多做一些關於剩餘的閱讀。 –

+0

我不確定低通濾波器是否適用於濾除FM信號中的噪聲,更不用說更復雜的調製。無論如何,在**解調之後,低通濾波器只適用於**。在此之前,你需要一個帶通濾波器。使用任何擴頻技術,帶通濾波器都需要非常寬,這意味着它仍然會傳遞很多噪聲。 – MSalters

+0

我正在開發的應用程序不是爲解調信號而設計的,它應該只能自動調製調製類型。基本上它應該能夠決定每當輸入信號被調製時:AM,FM,CW,SSB,QAM(QPSK等),BPSK –