[英]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.