簡體   English   中英

使用FFT過濾正弦波

[英]Filtering a sinusoidal wave with FFT

我正在嘗試在Matlab中編寫一個代碼,該代碼將一個或多個正弦波施加噪聲,並嘗試使用以下算法對其進行過濾:

  • 首先,我將輸入內容放入向量中

  • 然后我將fft()應用於該矢量,並將abs()應用於該fft
    -例如,如果“ x”是存儲波的矢量,則
    -y = abs(fft(x))

  • 現在在“ y”中,我使所有元素小於某個閾值0

  • 然后應用ifft()函數獲取濾波后的信號,讓我們說“ x1”

但是即使正弦波我也得到了最后一個波,但它是異相的(見圖)。是因為我將abs()應用於fft嗎?
但是我從中獲得該算法的材料並未對此進行討論。
我是否需要應用任何其他過濾器以獲取實際波形?

這是兩個波的圖:一個是我從上述過程中得到的,另一個是實際的波,它是無噪聲的正弦波: 我的圖

看看我的濾波波和實際波如何異相如何糾正?

如果您聽不懂這個問題或有任何想問的問題,請發表評論,我會盡力解釋。

您將FFT結果的絕對值分配給y,因此得到REAL值。 對此做ifft()只是假設虛部為零,因此是相移。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM