2011-06-11 52 views
0

我在matlab中有一個信號,以及爲特定頻帶計算瞬時相位的內容。我想過濾信號到這個範圍(使用帶通濾波器),然後獲得瞬時相位。我知道使用一些非線性相位響應的濾波器存在問題,有什麼方法可以解決這個問題嗎?我在網上發現了一些關於對信號進行過濾的信息,但它仍然有點不清楚。我想避免使用小波(他們可能在這裏矯枉過正)。謝謝。Matlab中的瞬時相位

+1

回覆:「過濾」:「過濾」功能通過過濾器兩次運行時間序列,一旦向前和向後一次,以便相位響應抵消。 – nibot 2011-06-11 22:55:05

回答

1

除非你採取noncasual技術(如由nibot評論建議filtfilt),你將永遠一些相位失真。具有延遲D的線性相位FIR將增加2 * pi * f * D的相位,而非線性相位IIR將增加非線性依賴於f的相位。

在這兩種情況下,很容易計算相位失真(例如,使用freqz(num, den)用於IIR)並在解釋結果測量時考慮該失真。當然,當相位在你感興趣的頻率範圍內發生顯着變化時,你會得到毫無意義的結果 - 但這是一個不同的問題。

+0

我見過使用IIR濾波器(特別是橢圓濾波器)的濾波器()的例子,但我的印象是,非線性相位響應意味着即使是後向濾波也不能使用IIR濾波器。 – MudPhud 2011-06-12 06:43:17

+0

filtfilt()應該適用於IIR過濾器。正如MATLAB的幫助頁面所說的那樣:「結果的相位失真精確地爲零,而幅值由濾波器幅度響應的平方修改」。 IIR響應很長時會出現一些錯誤,但是應該沒問題。 當然,你總是隻使用FFT。 – nimrodm 2011-06-12 07:39:44