# Does converting an FIR filter from causal to non-causal remove phase delay?

Let's say I have a causal 3-tap FIR filter:

$$y[n] = ax[n] + bx[n-1] + cx[n-2]$$

Assuming I have access to all the data prior to filtering and generate a similar non-causal filter:

$$y[n] = ax[n+1] + bx[n] + cx[n-1]$$

Would this new filter have the same frequency response but with different phase delay?

In general if you have a causal odd length $$N$$ FIR filter $$h[n]$$, defined for indices $$n\in[0,N-1]$$, moving the center bin to index $$n=0$$ means shifting the impulse response to the left by $$(N-1)/2$$ samples:

$$\tilde{h}[n]=h\left[n+\frac{N-1}{2}\right]\tag{1}$$

In the frequency domain this is equivalent to

$$\tilde{H}(e^{j\omega})=H(e^{j\omega})e^{j\omega (N-1)/2}\tag{2}$$

from which it follows that

$$\big|\tilde{H}(e^{j\omega})\big|=\big|H(e^{j\omega})\big|\tag{3}$$

and

$$\tilde{\phi}(\omega)=\phi(\omega)+\omega (N-1)/2\tag{4}$$

where $$\phi(\omega)$$ and $$\tilde{\phi}(\omega)$$ are the phases of $$H(e^{j\omega})$$ and $$\tilde{H}(e^{j\omega})$$, respectively.

If the coefficients $$h[n]$$ are symmetric with respect to the center tap, then $$\tilde{H}(e^{j\omega})$$ will be purely real-valued, if they are anti-symmetric, $$\tilde{H}(e^{j\omega})$$ will be purely imaginary, in all other cases, $$\tilde{H}(e^{j\omega})$$ will be a complex-valued function.

• I would add that if the original length $N-1$, causal filter $h[n]$ is linear phase, that means that $$h[N-1-n] = h[n]$$ and $$\phi(\omega) = -\omega \frac{N-1}{2}$$ which causes $\tilde{\phi}(\omega) = 0$ for all $\omega$. that means that $\tilde{H}(e^{j \omega})$ is purely real. Dec 4 '20 at 8:21
• @robertbristow-johnson: Yes, or purely imaginary, for type III linear phase. Dec 4 '20 at 11:04
• So does "shifting the impulse response to the left by (N−1)/2 samples" result in a zero phase filter? or just reduced phase?
– Izzo
Dec 4 '20 at 14:35
• @Izzo: You get a zero-phase filter only if the impulse response is symmetric. That is what I meant by saying that $\tilde{H}(e^{j\omega})$ becomes purely real-valued, which is the same a zero-phase. Dec 4 '20 at 15:06
• So because FIR is linear phase, it will have symmetric impulse response. Hence zero phase after shifting.
– Izzo
Dec 4 '20 at 15:19

Correct. The magnitude response would be the same and the phase response would be summed with $$\omega$$ (omega).

• What does "phase response would be summed with omega" mean?
– Izzo
Dec 4 '20 at 0:02
• The frequency response is a function of angular frequency, omega. By shifting the coefficients by one, that is equivalent to changing the phase of the frequency response by adding omega to phase. Put another way the group delay is one sample less for all frequencies. Dec 4 '20 at 0:48

Linear phase delay is the same as constant time delay. If you can offset the time of the output referenced to the input, forward or backward, you can change the slope of the phase versus frequency curve to any slope you like.
{"extraction_info": {"found_math": true, "script_math_tex": 0, "script_math_asciimath": 0, "math_annotations": 0, "math_alttext": 0, "mathml": 0, "mathjax_tag": 0, "mathjax_inline_tex": 1, "mathjax_display_tex": 1, "mathjax_asciimath": 0, "img_math": 0, "codecogs_latex": 0, "wp_latex": 0, "mimetex.cgi": 0, "/images/math/codecogs": 0, "mathtex.cgi": 0, "katex": 0, "math-container": 20, "wp-katex-eq": 0, "align": 0, "equation": 0, "x-ck12": 0, "texerror": 0, "math_score": 0.6763538718223572, "perplexity": 604.5798269534728}, "config": {"markdown_headings": true, "markdown_code": true, "boilerplate_config": {"ratio_threshold": 0.18, "absolute_threshold": 10, "end_threshold": 15, "enable": true}, "remove_buttons": true, "remove_image_figures": true, "remove_link_clusters": true, "table_config": {"min_rows": 2, "min_cols": 3, "format": "plain"}, "remove_chinese": true, "remove_edit_buttons": true, "extract_latex": true}, "warc_path": "s3://commoncrawl/crawl-data/CC-MAIN-2021-39/segments/1631780057796.87/warc/CC-MAIN-20210926022920-20210926052920-00504.warc.gz"}