Clear Filters
Clear Filters

Discontinuities in the PhaseDelay of an FIR filter

4 views (last 30 days)
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

Answers (1)

Kambiz Shoarinejad
Kambiz Shoarinejad on 27 Mar 2021
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.

Community Treasure Hunt

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

Start Hunting!