Discontinuities in the PhaseDelay of an FIR filter

조회 수: 8 (최근 30일)
Jason Debono
Jason Debono 2019년 6월 8일
답변: Kambiz Shoarinejad 2021년 3월 27일
When designing an FIR filterDesigner the phase response has discontinuities of PI (3.142) radians in the stopband.
These discontinuities should give a PhaseDelay function that has discontinuities also, but filterDesigner plots the filter's phasedelay function as a constant (a horizontal line).
Why is that so?
The same thing happens when using the MATLAB phasedelay function. For example consider a length 10 moving average filter that has the FIR 0.1*[1 1 1 1 1 1 1 1 1 1]. The figure below shows the phasedelay I obtained for it using the MATLAB phasedelay() function in red and the phase delay I obtained from first principles in blue. The blue one has the discontinuities while her red one stays constant at a value of 4.5 samples.
The two plots give the same value for the passband frequency range (which is the more important frequency range), but differ after that.
Is this just a convention used by the MATLAB filterDesigner tool and the MATLAB phasedelay function, or is there some Mathematical reason for it?
Thanks,
Jason

답변 (1개)

Kambiz Shoarinejad
Kambiz Shoarinejad 2021년 3월 27일
Good question! I noticed that myself too. I cannot think of any mathematical reason for this, and I think MATLAB phasedelay command is technically incorrect. For the MA filter of length M, we know that:
Therefore:
And the second term is what causes the discontinuities in the phase due to the sign changes at the zero crossing points of the magnitude response. So once we move beyond the main lobe of the magnitude response, we will have a generalized linear phase response of the form which will result in phase delay being equal to which would be as shown in the following plot. Obviously the group delay would remain constant. So I am guessing MATLAB phasedelay command does not treat generalized linear phases (i.e., with nonzero constant bias) properly and still calculates phase delay as the slope, which would technically be incorrect.

카테고리

Help CenterFile Exchange에서 Filter Analysis에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by