Outline
10.1 Frequency Response
10.2 Transfer Function
10.3 Phase Delay and Group Delay
10.4 System Classes
10.5 Summary
Exercises
DSP Study Guide · Chapter 10

Transform-Domain Systems

Analyzing LTI systems through the frequency response and the transfer function H(z): pole-zero geometry, magnitude and phase, phase delay and group delay, and the classical system classes built from them.

10.1 Frequency Response (FR)

10.1.1 Sinusoids as Eigenfunctions

The impulse response(脈衝響應)$h[n]$ completely describes an LSI (linear shift-invariant) system: the output is always the convolution $y[n] = x[n] \circledast h[n] = \sum_{m} h[m]\,x[n-m]$.

x[n] = e^(jω₀n) h[n] y[n] = H(e^(jω₀)) · e^(jω₀n)
Eigenfunction relation — a complex sinusoid passes through an LSI system unchanged in shape; it is only multiplied by the complex number $H(e^{j\omega_0})$(複數弦波是 LSI 系統的特徵函數).

Feed in a complex sinusoid(複數弦波)$x[n] = e^{j\omega_0 n}$ and watch the convolution factor:

Eigenfunction property $$y[n] = \sum_{m} h[m]\,e^{j\omega_0 (n-m)} = \underbrace{\Big(\sum_{m} h[m]\,e^{-j\omega_0 m}\Big)}_{H(e^{j\omega_0})}\, e^{j\omega_0 n} = H(e^{j\omega_0})\,x[n]$$

The complex scale factor is the DTFT of the impulse response evaluated at the input frequency. Writing it in polar form $H(e^{j\omega}) = |H(e^{j\omega})|\,e^{j\theta(\omega)}$, the output is

Frequency response $$y[n] = |H(e^{j\omega_0})|\;e^{j(\omega_0 n + \theta(\omega_0))}, \qquad H(e^{j\omega}) = \mathrm{DTFT}\{h[n]\}$$
Concept — why eigenfunctions matter
A complex sinusoid at $\omega_0$ comes out of any LSI system as the same sinusoid, scaled by $|H(e^{j\omega_0})|$ and phase-shifted by $\arg\{H(e^{j\omega_0})\} = \theta(\omega_0)$. Since any signal can be expressed as a superposition of sinusoids (DTFT), knowing $H(e^{j\omega})$ for all $\omega$ tells us everything about the system:
  • $|H(e^{j\omega})|$ — the magnitude response(振幅響應) → frequency-dependent gain;
  • $\arg\{H(e^{j\omega})\}$ — the phase response(相位響應) → frequency-dependent phase shift.
直觀解釋(點擊展開)
LSI 系統不會「創造」新的頻率成分。輸入是頻率 $\omega_0$ 的弦波,輸出仍然是同一頻率的弦波,只是大小被乘上 $|H(e^{j\omega_0})|$、相位被平移 $\theta(\omega_0)$。這就像把訊號分解成許多不同頻率的「積木」,系統只能對每塊積木個別調整音量與時間位置,不能改變積木的形狀。因此只要知道系統對每個頻率的增益與相移(即頻率響應),就完全掌握了系統的行為。

10.1.2 Real Sinusoids

In practice signals are real. Decompose a real cosine into two complex sinusoids and apply the eigenfunction property to each:

Real input decomposition $$x[n] = A\cos(\omega_0 n + \phi) = \frac{A}{2}e^{j\phi}e^{j\omega_0 n} + \frac{A}{2}e^{-j\phi}e^{-j\omega_0 n}$$

For a real impulse response $h[n]$ the frequency response is conjugate-symmetric, $H(e^{-j\omega}) = H^{*}(e^{j\omega}) = |H(e^{j\omega})|e^{-j\theta(\omega)}$, so the two terms recombine into a real cosine:

Real sinusoid through a real LSI system $$A\cos(\omega_0 n + \phi)\;\longrightarrow\; \boxed{\,y[n] = A\,|H(e^{j\omega_0})|\cos\big(\omega_0 n + \phi + \theta(\omega_0)\big)\,}$$
Key result
A real sinusoid of frequency $\omega_0$ passed through an LSI system with real $h[n]$ keeps its frequency; its gain is modified by $|H(e^{j\omega_0})|$ and its phase is shifted by $\theta(\omega_0)$. This is the single most-used fact for computing sinusoidal steady-state outputs on exams.

10.1.3 Transient and Steady State

Most signals start at a finite time(訊號從有限時間開始), e.g. a gated complex sinusoid $x[n] = e^{j\omega_0 n}\,u[n]$. What does gating do? Split the convolution sum:

Transient / steady-state decomposition $$y[n] = \sum_{m=-\infty}^{n} h[m]\,e^{j\omega_0(n-m)} = \underbrace{H(e^{j\omega_0})\,e^{j\omega_0 n}}_{\text{steady state(穩態)}} \;-\;\underbrace{\Big(\sum_{m=n+1}^{\infty} h[m]\,e^{-j\omega_0 m}\Big)e^{j\omega_0 n}}_{\text{transient(暫態)}}$$
2026-06-12T22:40:39.265743 image/svg+xml Matplotlib v3.10.8, https://matplotlib.org/ −1.0 −0.5 0.0 0.5 1.0 x[n] Input: x[n] = cos(0.3n)·u[n] (switched on at n = 0) −40 −20 0 20 40 60 80 n −0.5 0.0 0.5 y[n] Output of y[n] = 0.8y[n−1] + 0.2x[n]: transient decays like 0.8ⁿ, then steady state steady state |H(e^j0.3)|cos(0.3n+θ(0.3))
Fig. 10-1 — Gated sinusoid $x[n]=\cos(0.3n)u[n]$ through the stable one-pole system $y[n]=0.8y[n-1]+0.2x[n]$. The output (orange stems) converges to the steady-state sinusoid $0.599\cos(0.3n-0.787)$ (dashed) after the transient decays like $0.8^n$(暫態以 $0.8^n$ 速度消失,之後只剩穩態弦波).

10.1.4 Example: Moving-Average Filter

Worked Example 10-A — frequency response of the M-point moving average

The MA filter $y[n] = \frac{1}{M}\sum_{\ell=0}^{M-1} x[n-\ell]$ is convolution with $h[n] = \frac{1}{M}$ for $0 \le n \le M-1$ (zero otherwise).

Step 1 — DTFT as a geometric sum. $$H(e^{j\omega}) = \frac{1}{M}\sum_{n=0}^{M-1} e^{-j\omega n} = \frac{1}{M}\,\frac{1-e^{-j\omega M}}{1-e^{-j\omega}}$$
Step 2 — extract linear phase and a real ratio. Factor out half-angle exponentials: $$H(e^{j\omega}) = \frac{1}{M}\,e^{-j\omega\frac{M-1}{2}}\, \frac{\sin(M\omega/2)}{\sin(\omega/2)}$$
Step 3 — magnitude and phase. $$\big|H(e^{j\omega})\big| = \left|\frac{1}{M}\frac{\sin(M\omega/2)}{\sin(\omega/2)}\right|, \qquad \theta(\omega) = -\frac{M-1}{2}\,\omega + \pi r,\quad r = \Big\lfloor \frac{M\omega}{2\pi} \Big\rfloor$$ The $\pi r$ term accounts for the sign changes of the Dirichlet ratio — every time $\sin(M\omega/2)$ changes sign the phase jumps by $\pi$.
Step 4 — response to a two-tone input ($M=5$). For $x[n] = e^{j\omega_0 n} + e^{j\omega_1 n}$ with $\omega_0 = 0.1\pi$, $\omega_1 = 0.5\pi$: $$H(e^{j0.1\pi}) \approx 0.90\,e^{-j0.2\pi}, \qquad H(e^{j0.5\pi}) = 0.2$$ so $y[n] = H(e^{j\omega_0})e^{j\omega_0 n} + H(e^{j\omega_1})e^{j\omega_1 n}$: the slow component passes nearly unchanged (gain 0.90, delayed 2 samples), the fast component is attenuated to 0.2 — the MA filter is a lowpass smoother.
2026-06-12T22:40:38.878792 image/svg+xml Matplotlib v3.10.8, https://matplotlib.org/ −2 0 2 4 6 8 n −0.05 0.00 0.05 0.10 0.15 0.20 0.25 0.30 h[n] Impulse response (M = 5) 0 π/2 π 3π/2 ω (rad/sample) 0.0 0.2 0.4 0.6 0.8 1.0 |H(e^jω)| Magnitude response 0 π/2 π 3π/2 ω (rad/sample) −2 −1 0 1 2 θ(ω) (rad) Phase response (principal value)
Fig. 10-2 — $M=5$ moving-average filter: impulse response, magnitude $\frac{1}{5}|\sin(5\omega/2)/\sin(\omega/2)|$ with nulls at $\omega = 2\pi k/5$, and the principal-value phase showing the linear slope $-2\omega$ with $\pi$ jumps at the magnitude nulls(振幅零點處相位跳 $\pi$).
Warning — phase jumps are not discontinuous physics
The $\pi$ jumps in $\theta(\omega)$ come from writing a signed real amplitude $\frac{\sin(M\omega/2)}{\sin(\omega/2)}$ as a positive magnitude times a phase. When the sign flips, the $\pi$ is absorbed into the phase. Plotting tools also wrap phase into $(-\pi,\pi]$ (principal value), causing additional cosmetic $2\pi$ jumps. Always check which kind of jump you are looking at.

10.2 Transfer Function (TF)

10.2.1 From Difference Equation to H(z)

Alternatively, take the z-transform of $y[n] = h[n] \circledast x[n]$: convolution becomes multiplication, $Y(z) = H(z)X(z)$. The transfer function(轉移函數) $H(z)$ can be obtained two equivalent ways:

Transfer function $$H(z) \;=\; \begin{cases} \dfrac{\sum_k p_k z^{-k}}{\sum_k d_k z^{-k}} & \text{if the system has difference-equation form}\\[10px] \displaystyle\sum_n h[n]\,z^{-n} & \text{directly from the impulse response} \end{cases}$$

For an FIR filter with $h[n] = \{h_0, h_1, \dots, h_{M-1}\}$ the two views coincide trivially: $p_k = h_k$, $d_0 = 1$, and the difference equation is $y[n] = \sum_{k=0}^{M-1} h_k\,x[n-k]$.

Worked Example 10-B — MA filter as a transfer function
Step 1. $h[n] = \frac{1}{M}$ on $0\le n\le M-1$ gives the geometric sum $$H(z) = \frac{1}{M}\sum_{\ell=0}^{M-1} z^{-\ell} = \frac{1-z^{-M}}{M(1-z^{-1})} = \frac{z^{M}-1}{M\,z^{M-1}(z-1)}$$
Step 2 — roots. The numerator $z^M = 1$ has $M$ roots — the $M$-th roots of unity $z = e^{j2\pi r/M}$, $r = 0,\dots,M-1$, equally spaced on the unit circle.
Step 3 — cancellation. The root at $z = 1$ (i.e. $r=0$) cancels the denominator pole at $z=1$, so the filter has $M-1$ zeros on the unit circle and only trivial poles at $z=0$. These $M-1$ zeros are exactly the magnitude nulls of Fig. 10-2.

10.2.2 Poles, Zeros, ROC, and Stability

Worked Example 10-C — third-order recursive system (lecture TF example)
Step 1 — difference equation to H(z). $$y[n] = x[n-1] - 1.2x[n-2] + x[n-3] + 1.3y[n-1] - 1.04y[n-2] + 0.222y[n-3]$$ Collect $Y$ terms on the left and transform: $$H(z) = \frac{Y(z)}{X(z)} = \frac{z^{-1} - 1.2z^{-2} + z^{-3}}{1 - 1.3z^{-1} + 1.04z^{-2} - 0.222z^{-3}}$$
Step 2 — factorize. $$H(z) = \frac{z^{-1}\,(1-\zeta_0 z^{-1})(1-\zeta_0^{*} z^{-1})} {(1-\lambda_0 z^{-1})(1-\lambda_1 z^{-1})(1-\lambda_1^{*} z^{-1})}, \qquad \begin{aligned} \zeta_0 &= 0.6 + j0.8\\ \lambda_0 &= 0.3\\ \lambda_1 &= 0.5 + j0.7 \end{aligned}$$ Zeros(零點)$\zeta_0, \zeta_0^{*}$ lie on the unit circle ($|\zeta_0| = 1$); poles(極點)at $0.3$ and $0.5 \pm j0.7$ ($|\lambda_1| \approx 0.86$) lie inside it.
Step 3 — ROC and stability. The poles $\lambda_i$ determine the ROC(收斂區域):
  • causal → ROC is $|z| > \max_i |\lambda_i| = 0.86$;
  • this ROC includes the unit circle → the system is also stable.
Key — causal and stable
For a causal system the ROC is the exterior $|z| > \max|\lambda_i|$. The system is BIBO-stable iff the ROC contains the unit circle, i.e. iff all poles are strictly inside the unit circle(因果且穩定 ⇔ 所有極點都在單位圓內). Zeros may be anywhere.

10.2.3 From H(z) to Frequency Response

The DTFT is the z-transform evaluated on the unit circle(單位圓):

FR = TF on the unit circle $$H(e^{j\omega}) = H(z)\Big|_{z = e^{j\omega}}$$

Factor $H(z)$ into first-order terms and evaluate at $z = e^{j\omega}$:

Factored frequency response $$H(z) = \frac{p_0\prod_{k=1}^{M}(1-\zeta_k z^{-1})}{d_0\prod_{k=1}^{N}(1-\lambda_k z^{-1})} \;\;\Longrightarrow\;\; H(e^{j\omega}) = \frac{p_0}{d_0}\,e^{j\omega(N-M)}\, \frac{\prod_{k=1}^{M}\big(e^{j\omega}-\zeta_k\big)}{\prod_{k=1}^{N}\big(e^{j\omega}-\lambda_k\big)}$$

Taking magnitude and argument term by term:

Magnitude and phase from roots $$\big|H(e^{j\omega})\big| = \Big|\frac{p_0}{d_0}\Big|\, \frac{\prod_{k=1}^{M}\big|e^{j\omega}-\zeta_k\big|}{\prod_{k=1}^{N}\big|e^{j\omega}-\lambda_k\big|}, \qquad \theta(\omega) = \arg\Big\{\frac{p_0}{d_0}\Big\} + \omega(N-M) + \sum_{k=1}^{M}\arg\big\{e^{j\omega}-\zeta_k\big\} - \sum_{k=1}^{N}\arg\big\{e^{j\omega}-\lambda_k\big\}$$

10.2.4 Geometric Interpretation of the FR

Each factor $(e^{j\omega} - \nu)$ is a vector drawn from the root $\nu$ (pole or zero) to the point $e^{j\omega}$ moving along the unit circle. The whole frequency response is a product/ratio of these vectors:

Key — geometric rules
  • Magnitude $|H(e^{j\omega})|$ = (product of lengths of vectors from zeros) ÷ (product of lengths of vectors from poles).
  • Phase $\theta(\omega)$ = (sum of angles of vectors from zeros) − (sum of angles of vectors from poles), plus the linear term $\omega(N-M)$.
  • Roots near the unit circle cause rapid changes: a zero near/on the u.c. → magnitude minimum (dips to 0 if on it); a pole near the u.c. → magnitude peak (→ $\infty$ if on it); the relative angle swings quickly → fast phase variation.
  • A pole and zero near each other cancel when seen from afar; they only affect the response when $e^{j\omega}$ gets close.
直觀解釋(點擊展開)
想像 $e^{j\omega}$ 是一個沿著單位圓行走的觀察點。從每個零點、極點各拉一條橡皮筋到這個觀察點:振幅就是「零點橡皮筋長度的乘積 ÷ 極點橡皮筋長度的乘積」。當觀察點走近一個極點時,分母的某條橡皮筋變得很短,振幅暴增(共振峰);走近零點時分子變短,振幅塌陷(凹谷)。把 $|H(z)|$ 想成 z 平面上的 3D 地形:極點是插向天空的「帳篷柱」,零點是釘住地面的「圖釘」,而頻率響應只是沿單位圓走一圈所看到的地形高度。
2026-06-12T22:40:39.656702 image/svg+xml Matplotlib v3.10.8, https://matplotlib.org/ −1 0 1 Re{z} −1.0 −0.5 0.0 0.5 1.0 Im{z} Pole–zero plot zeros ζ poles λ 0 π/4 π/2 3π/4 π ω (rad/sample) 0.00 0.25 0.50 0.75 1.00 1.25 1.50 |H(e^jω)| Magnitude response 0 π/4 π/2 3π/4 π ω (rad/sample) −3 −2 −1 0 θ(ω) (rad) Phase response
Fig. 10-3 — Lecture TF example: zeros $0.6\pm j0.8$ on the unit circle, poles at $0.3$ and $0.5 \pm j0.7$. The on-circle zero (angle $\approx 0.295\pi$) forces $|H| = 0$, while the nearby pole at radius $0.86$ (angle $\approx 0.303\pi$) pushes the magnitude up right next to the null — a sharp notch-and-peak pair, with fast phase variation in the same region(單位圓上的零點造成深谷,旁邊的極點造成尖峰).

First-order building block: a single zero

The factor $H(e^{j\omega}) = 1 - re^{j\theta}e^{-j\omega}$ (one zero at $z = re^{j\theta}$) is the elementary building block — every rational response is a product/ratio of such terms. Its log magnitude, phase and group delay all concentrate their activity around $\omega = \theta$:

2026-06-12T22:40:40.138994 image/svg+xml Matplotlib v3.10.8, https://matplotlib.org/ 0 π/2 π 3π/2 ω (rad/sample) −20 −15 −10 −5 0 5 dB Log magnitude (dB) θ = 0 θ = π/2 θ = π 0 π/2 π 3π/2 ω (rad/sample) −1.0 −0.5 0.0 0.5 1.0 radians Phase (rad) θ = 0 θ = π/2 θ = π 0 π/2 π 3π/2 ω (rad/sample) −8 −6 −4 −2 0 samples Group delay (samples) θ = 0 θ = π/2 θ = π
Fig. 10-4 — Single zero $1 - re^{j\theta}e^{-j\omega}$ with $r = 0.9$ for $\theta = 0, \pi/2, \pi$ (lecture Examples I & II). The dip in log magnitude, the rapid phase swing, and the negative group-delay dip all sit at $\omega = \theta$; moving $\theta$ just translates the pattern. A pole contributes the reciprocal magnitude and negated phase of the same plots(極點為倒數振幅、相反相位).

10.2.5 Filtering: Shaping the Magnitude Response

Filtering means separating information in frequency with a constructed $H(e^{j\omega})$: given $x[n] = A\cos(\omega_1 n) + B\cos(\omega_2 n)$ where only the $\omega_1$ part is wanted, build $|H(e^{j\omega_1})| \approx 1$ and $|H(e^{j\omega_2})| \approx 0$, so that $y[n] \approx A\cos(\omega_1 n + \theta(\omega_1))$.

Worked Example 10-D — designing a 3-point FIR filter (lecture filtering example)
Step 1 — filter family. Consider 3-pt FIR filters $h[n] = \{\alpha,\ \beta,\ \alpha\}$ (symmetric). Then $$H(e^{j\omega}) = \alpha + \beta e^{-j\omega} + \alpha e^{-2j\omega} = e^{-j\omega}\big(\beta + 2\alpha\cos\omega\big) \;\Rightarrow\; \big|H(e^{j\omega})\big| = \big|\beta + 2\alpha\cos\omega\big|$$ The free parameters $\alpha, \beta$ shape the magnitude.
Step 2 — constraints. Input mixes tones at $\omega_1 = 0.1$ and $\omega_2 = 0.4$ rad/sample; we want to keep the first and remove the second: $$\beta + 2\alpha\cos(0.1) = 1, \qquad \beta + 2\alpha\cos(0.4) = 0$$
Step 3 — solve. Subtracting: $2\alpha(\cos 0.1 - \cos 0.4) = 1$, hence $$\alpha = 6.76, \qquad \beta = -12.46$$
Step 4 — verify. The output is $y[n] \approx \cos(0.1n + \theta(0.1))$ with $\theta(\omega) = -\omega$: the wanted tone survives with a one-sample delay, the unwanted tone is annihilated (Fig. 10-5).
2026-06-12T22:40:40.644375 image/svg+xml Matplotlib v3.10.8, https://matplotlib.org/ 0.0 0.2 0.4 0.6 0.8 1.0 ω (rad/sample) −40 −20 0 20 dB |H(e^jω)| = |β + 2α cos ω|: gain 1 at ω₁ = 0.1, null at ω₂ = 0.4 0 25 50 75 100 125 150 175 200 n −10 0 10 amplitude Two-tone input: the ω₂ = 0.4 component is removed output y[n] ≈ cos(0.1(n−1)) input x[n]
Fig. 10-5 — Designed 3-pt filter $h[n] = \{6.76, -12.46, 6.76\}$: magnitude in dB with unit gain at $\omega_1 = 0.1$ (red line) and a null at $\omega_2 = 0.4$ (blue line); below, the two-tone input (stems) and the output (red), which is the clean $\omega_1$ tone delayed by one sample(輸出只剩想要的低頻弦波,延遲 1 個樣本).
Tip — degrees of freedom
A length-$L$ FIR filter has $L$ free taps, so it can satisfy about $L$ independent magnitude/phase constraints. Here 2 unknowns $(\alpha,\beta)$ met 2 constraints exactly. Real filter design (Chapter on filter design) generalizes this idea to many constraints over whole frequency bands.

10.3 Phase Delay and Group Delay

10.3.1 Phase Delay

For a sinusoidal input $x[n] = \cos(\omega_0 n)$ we found $y[n] = |H(e^{j\omega_0})|\cos(\omega_0 n + \theta(\omega_0))$. The phase shift can be re-read as a time shift by factoring $\omega_0$ out:

Phase delay(相位延遲) $$y[n] \propto \cos\Big(\omega_0\big(n - \tau_p(\omega_0)\big)\Big), \qquad \boxed{\;\tau_p(\omega) = \frac{-\theta(\omega)}{\omega}\;}$$

The minus sign makes a positive $\tau_p$ mean a delay (causal behavior): a falling phase corresponds to the carrier arriving later.

Worked Example 10-E — phase delay of the 3-pt filter
Step 1. From Example 10-D, $H(e^{j\omega}) = e^{-j\omega}(\beta + 2\alpha\cos\omega)$, so wherever the real factor is positive, $\theta(\omega) = -\omega$.
Step 2. $$\tau_p(\omega) = -\frac{-\omega}{\omega} = +1 \text{ sample at all frequencies}$$ i.e. every sinusoid is delayed exactly 1 sample — as observed in Fig. 10-5: the filter is linear-phase, the delay equals the index of the symmetry center of $h[n]$.

10.3.2 Group Delay and Modulated Carriers

Phase delay describes a single sinusoid. Real signals carry information in envelopes. Consider a modulated carrier(調變載波):

AM test signal $$x[n] = A[n]\cos(\omega_c n), \quad A[n] = A\cos(\omega_m n),\ \omega_m \ll \omega_c \;\;\Longrightarrow\;\; x[n] = \frac{A}{2}\big[\cos((\omega_c-\omega_m)n) + \cos((\omega_c+\omega_m)n)\big]$$

The signal occupies two close frequencies $\omega_c \pm \omega_m$. Assume $|H(e^{j\omega})| \approx 1$ around $\omega_c$, and call the phases at the two side frequencies $\theta(\omega_c - \omega_m) = \theta_l$ and $\theta(\omega_c + \omega_m) = \theta_u$. The output recombines into

Carrier vs envelope phase $$y[n] = A\cos\Big(\omega_c n + \tfrac{\theta_u + \theta_l}{2}\Big)\cdot \cos\Big(\omega_m n + \tfrac{\theta_u - \theta_l}{2}\Big)$$

The average phase shifts the carrier; the difference shifts the envelope. If $\theta(\omega)$ is locally linear around $\omega_c$, i.e. $\theta(\omega_c + \Delta\omega) \approx \theta(\omega_c) + S\,\Delta\omega$ with slope $S = \frac{d\theta}{d\omega}\big|_{\omega_c}$, then:

Group delay(群延遲) $$\boxed{\;\tau_g(\omega_c) = -\frac{d\theta(\omega)}{d\omega}\bigg|_{\omega=\omega_c}\;}$$
2026-06-12T22:42:05.235281 image/svg+xml Matplotlib v3.10.8, https://matplotlib.org/ 0 50 100 150 200 250 300 −1 0 1 Input x[n] = cos(0.02πn)·cos(0.4πn) envelope |A[n]| 0 50 100 150 200 250 300 n −1 0 1 All-pass output: same amplitude, envelope delayed by group delay envelope delayed by τg ≈ 19.1 samples 0 π/2 π ω (rad/sample) 0 10 20 τg(ω) (samples) ω_c = 0.4π, τg ≈ 19 Group delay of the all-pass filter (poles at 0.9e^{±j0.4π})
Fig. 10-6 — AM signal $\cos(0.02\pi n)\cos(0.4\pi n)$ through an all-pass filter with poles at $0.9e^{\pm j0.4\pi}$. The sample-by-sample carrier shifts only by $\tau_p \approx 2.5$ samples, but the information-bearing envelope (red dashed) arrives $\tau_g \approx 19$ samples late — the group delay evaluated at $\omega_c$ (bottom panel)(載波延遲由 $\tau_p$ 決定,包絡延遲由 $\tau_g$ 決定).
Phase delay $\tau_p(\omega)$Group delay $\tau_g(\omega)$
Definition$-\theta(\omega)/\omega$$-d\theta(\omega)/d\omega$
Geometric meaning(negative) slope of the chord from origin to $(\omega, \theta(\omega))$(negative) local tangent slope of $\theta(\omega)$
What it delaysthe carrier / a single sinusoid(載波)the envelope / information(包絡、訊息)
Equal when$\theta(\omega) = -\tau\omega$ exactly linear through the origin → $\tau_p = \tau_g = \tau$

10.3.3 Phase Distortion

If $\theta(\omega)$ is not linear across the band occupied by $A[n]$, different envelope frequencies suffer different delays and the envelope is smeared — phase distortion(相位失真). The lecture closes with a striking example: a signal made of pulse bursts at different carrier frequencies passes through a system whose magnitude is nearly flat but whose group delay differs strongly between the two carrier bands — at the output the bursts arrive at different times and overlap differently, even though "the magnitude response barely touched them".

Warning — flat magnitude does not mean distortion-free
A system can have $|H(e^{j\omega})| \equiv 1$ (all-pass, next section) and still mangle a waveform badly through its nonlinear phase. Checking only the magnitude response is a classic exam (and engineering) trap. Distortionless transmission requires both constant magnitude and linear phase over the signal band.
直觀解釋(點擊展開)
把 $\theta(\omega)$ 想成「每個頻率的出發時刻表」。$\tau_p$ 是某一班車(單一頻率)誤點多久;$\tau_g$ 是「一群班車」(一個窄頻帶,承載包絡訊息)整體誤點多久。若時刻表是一條直線(線性相位),所有班車誤點相同,乘客(波形)完好抵達;若是彎曲的(非線性相位),不同班車誤點不一,整個訊號的形狀就被拉扯變形——即使每班車的「載客量」(振幅)完全沒變。

10.4 System Classes in the Transform Domain

(Supplementary to the slides.) Three classical families of systems are defined directly by their pole-zero geometry, and together they organize everything in 10.2–10.3: all-pass systems carry only phase, minimum-phase systems carry the least possible phase for a given magnitude, and linear-phase FIR systems carry a pure delay phase.

10.4.1 All-Pass Systems

An all-pass system(全通系統) has $|H_{ap}(e^{j\omega})| = $ constant for all $\omega$. The construction: pair every pole $a$ with a zero at its conjugate reciprocal $1/a^{*}$:

All-pass building block $$H_{ap}(z) = \frac{z^{-1} - a^{*}}{1 - a z^{-1}} \qquad\Longrightarrow\qquad \big|H_{ap}(e^{j\omega})\big| = 1 \ \ \forall \omega$$

On the unit circle the vector to the zero at $1/a^{*}$ is always proportional in length to the vector to the pole at $a$ — the ratio of lengths is constant, so the magnitude never moves. Only the phase (and hence the group delay) varies.

2026-06-12T22:40:41.662026 image/svg+xml Matplotlib v3.10.8, https://matplotlib.org/ −1 0 1 Re{z} −1.5 −1.0 −0.5 0.0 0.5 1.0 1.5 Im{z} Pole–zero: conjugate-reciprocal pair pole a = 0.8 zero 1/a = 1.25 0 π/2 π ω (rad/sample) 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4 |H(e^jω)| Magnitude: exactly 1 at all ω 0 π/2 π ω (rad/sample) 0 2 4 6 8 τg(ω) (samples) Group delay: positive, peaks near pole angle
Fig. 10-7 — First-order all-pass with pole $a = 0.8$ and zero $1/a = 1.25$: the magnitude is exactly 1 everywhere, while the group delay is positive and peaks near the pole angle ($\omega = 0$ here). For a stable causal all-pass, $\tau_g(\omega) > 0$ always(穩定因果全通系統的群延遲恆為正).
Key facts about all-pass systems
  • Poles inside the circle, zeros at conjugate-reciprocal positions outside.
  • $\tau_g(\omega) > 0$ for every $\omega$ (stable causal case) — an all-pass can only add delay.
  • The continuous phase $\arg H_{ap}(e^{j\omega})$ is monotonically decreasing.
  • Used to equalize phase without touching magnitude, and as the "phase carrier" in the decomposition of 10.4.2.

10.4.2 Minimum-Phase and Inverse Systems

A causal stable system is minimum-phase(最小相位) if all its zeros (as well as poles) are inside the unit circle. Then the inverse system $1/H(z)$ — whose poles are the zeros of $H(z)$ — is also causal and stable: minimum-phase systems are exactly the ones that can be undone by a realizable filter (e.g. channel equalization).

Reflecting a zero $\zeta$ to $1/\zeta^{*}$ multiplies the response by an all-pass factor, which leaves $|H(e^{j\omega})|$ unchanged. Hence many systems share one magnitude, and:

Magnitude–phase decomposition $$\boxed{\;H(z) = H_{min}(z)\,H_{ap}(z)\;}$$

Every rational $H(z)$ is a minimum-phase system (carrying all of the magnitude) cascaded with an all-pass (carrying the excess phase). Among all systems with the same $|H(e^{j\omega})|$, the minimum-phase one has:

2026-06-12T22:40:42.454812 image/svg+xml Matplotlib v3.10.8, https://matplotlib.org/ 0 π/2 π ω (rad/sample) −10.0 −7.5 −5.0 −2.5 0.0 2.5 5.0 dB Identical magnitude (dB) H_min H_max 0 π/2 π ω (rad/sample) −6 −5 −4 −3 −2 −1 0 radians Unwrapped phase H_min (zeros at 0.8e^±j0.6π) H_max (zeros at 1.25e^±j0.6π) 0 π/2 π ω (rad/sample) −4 −2 0 2 4 6 samples Group delay H_min H_max
Fig. 10-8 — Minimum-phase FIR $H_{min}$ (zeros $0.8e^{\pm j0.6\pi}$) vs the maximum-phase mirror $H_{max}$ (zeros reflected to $1.25e^{\pm j0.6\pi}$): identical magnitude (left, curves overlap), but $H_{max}$ accumulates more phase lag and a larger group delay everywhere(相同振幅、不同相位/群延遲——最小相位版本延遲最小).

10.4.3 Generalized Linear-Phase FIR Systems

A system has (generalized) linear phase(線性相位) if $H(e^{j\omega}) = A(\omega)\,e^{-j(\alpha\omega - \beta)}$ with $A(\omega)$ real. Then $\tau_g(\omega) = \alpha$ is constant — no phase distortion, every envelope is delayed by the same $\alpha$ samples. For causal FIR filters of length $M$ this happens exactly when the impulse response is symmetric or antisymmetric:

Linear-phase condition (FIR) $$h[n] = \pm\,h[M-1-n] \quad\Longrightarrow\quad \tau_g(\omega) = \alpha = \frac{M-1}{2} \ \text{samples}$$

The symmetry constrains the zero locations: $z^{-(M-1)}H(1/z) = \pm H(z)$, so if $\zeta$ is a zero, then $1/\zeta$, $\zeta^{*}$, $1/\zeta^{*}$ are all zeros. The zero constellation therefore consists of:

2026-06-12T22:40:42.782213 image/svg+xml Matplotlib v3.10.8, https://matplotlib.org/ 0 1 2 3 4 5 6 7 n 0.0 0.2 0.4 0.6 0.8 1.0 h[n] Symmetric h[n] = h[M−1−n] (type-II-like, M = 8) −1 0 1 Re{z} −1.5 −1.0 −0.5 0.0 0.5 1.0 1.5 Im{z} Zeros: reciprocal-conjugate quadruples / unit-circle pairs / z = −1
Fig. 10-9 — A symmetric length-8 FIR ($h[n] = h[7-n]$, left) and its zero constellation (right): a quadruple $0.7e^{\pm j\pi/2}$, $1.43e^{\pm j\pi/2}$, a conjugate pair on the unit circle at $e^{\pm j0.8\pi}$, and a zero at $z = -1$(線性相位 ⇒ 零點成「倒數共軛」對稱組).
Warning — linear phase vs minimum phase vs causality
A linear-phase FIR cannot be minimum-phase (its zeros come in $\zeta, 1/\zeta$ pairs, so some lie on/outside the circle, except in degenerate cases) — the price of zero phase distortion is the fixed delay $(M-1)/2$. More generally, causality forces a nonzero phase response: a causal system cannot have $\theta(\omega) \equiv 0$ unless $h[n] = c\,\delta[n]$. Zero-phase filtering is only possible offline (non-causal processing, e.g. MATLAB filtfilt).
直觀解釋(點擊展開)
三個家族各司其職:全通=只動相位不動振幅(純「時間整形器」);最小相位=給定振幅下相位代價最小、能量最早到、且可被穩定地反轉(等化);線性相位=相位是一條直線,所有頻率等延遲,波形不變形。任何系統都可拆成 $H_{min}\cdot H_{ap}$:振幅全部由 $H_{min}$ 負責,多餘的相位推給 $H_{ap}$。考試常考:把單位圓外的零點 $\zeta$ 反射到 $1/\zeta^{*}$,振幅不變、相位變小——這就是兩者只差一個全通因子的意思。

10.5 Chapter Summary

Frequency response
$e^{j\omega_0 n}$ is an eigenfunction: output $= H(e^{j\omega_0})\,e^{j\omega_0 n}$. Real sinusoid → gain $|H|$, phase shift $\theta(\omega_0)$. Gated input = steady state − transient (DTFT of the $h[n]$ tail); transient vanishes after $N$ samples for FIR, decays for stable IIR.
Transfer function
$Y(z) = H(z)X(z)$; $H(z)$ from the difference equation ($\sum p_k z^{-k} / \sum d_k z^{-k}$) or from $h[n]$. Causal → ROC outside the largest pole; stable ⇔ poles inside the unit circle. FR $=$ TF on the unit circle.
Pole-zero geometry
$|H|$ = product of zero-vector lengths ÷ pole-vector lengths; $\theta$ = zero angles − pole angles $+\ \omega(N-M)$. Zeros near the u.c. → dips; poles near the u.c. → peaks; close pole-zero pairs cancel from afar.
Phase delay vs group delay
$\tau_p = -\theta(\omega)/\omega$ delays the carrier; $\tau_g = -d\theta/d\omega$ delays the envelope (information). Nonlinear $\theta(\omega)$ over the signal band → phase distortion even with flat magnitude.
System classes
All-pass: $|H| \equiv 1$, pole $a$ ↔ zero $1/a^{*}$, $\tau_g > 0$. Minimum-phase: all roots inside, invertible by a causal stable filter, least delay for its magnitude. Any $H = H_{min}H_{ap}$.
Linear phase
FIR with $h[n] = \pm h[M-1-n]$ → $\theta$ linear, $\tau_g = (M-1)/2$ constant, zero constellation in reciprocal-conjugate quadruples / unit-circle pairs / $z=\pm1$. No phase distortion, fixed bulk delay.

Exercises

Exercise 1 — Steady-State Response to a Real Sinusoid

Problem: A 3-point moving-average filter $h[n] = \{\tfrac13, \tfrac13, \tfrac13\}$ (for $n = 0,1,2$) is driven by $x[n] = \cos\!\big(\tfrac{\pi}{4}n + \tfrac{\pi}{6}\big)$. Find the steady-state output $y[n]$ exactly, and interpret the phase shift as a time delay.

Click to reveal solution

Frequency response (Example 10-A with $M = 3$, or directly):

$$H(e^{j\omega}) = \frac13\big(1 + e^{-j\omega} + e^{-2j\omega}\big) = \frac13 e^{-j\omega}\big(1 + 2\cos\omega\big)$$

At $\omega_0 = \pi/4$: $\cos(\pi/4) = \tfrac{\sqrt2}{2}$, so

$$H(e^{j\pi/4}) = \frac{1+\sqrt{2}}{3}\,e^{-j\pi/4} \approx 0.805\,e^{-j\pi/4}$$

Real input, real $h[n]$ → apply the boxed result of 10.1.2:

$$y[n] = 0.805\cos\Big(\frac{\pi}{4}n + \frac{\pi}{6} - \frac{\pi}{4}\Big) = 0.805\cos\Big(\frac{\pi}{4}(n-1) + \frac{\pi}{6}\Big)$$

The phase shift $-\pi/4$ at frequency $\pi/4$ is exactly a one-sample delay ($\tau_p = \frac{\pi/4}{\pi/4} = 1$), consistent with linear phase $\theta(\omega) = -\omega$ and the symmetry center of $h[n]$ at $n = 1$.

Exercise 2 — Moving-Average Frequency Response and Nulls

Problem: (a) Derive the closed-form frequency response of the $M$-point moving average $y[n] = \frac1M\sum_{\ell=0}^{M-1}x[n-\ell]$. (b) For $M = 4$, list all frequencies in $(0, \pi]$ at which the response is exactly zero, and explain them with the zero locations of $H(z)$. (c) Which input sinusoids are completely blocked?

Click to reveal solution

(a) Geometric sum:

$$H(e^{j\omega}) = \frac1M\,\frac{1-e^{-j\omega M}}{1-e^{-j\omega}} = \frac1M\,e^{-j\omega\frac{M-1}{2}}\,\frac{\sin(M\omega/2)}{\sin(\omega/2)}$$

(b) Zeros where $\sin(M\omega/2) = 0$ but $\sin(\omega/2) \ne 0$: $\omega = 2\pi k/M$, $k = 1, \dots, M-1$. For $M = 4$:

$$\omega = \frac{\pi}{2}, \ \pi \quad (k = 1, 2; \ k=3 \text{ gives } \tfrac{3\pi}{2} \notin (0,\pi])$$

In the z-plane, $H(z) = \frac{z^4 - 1}{4z^3(z-1)}$: the 4th roots of unity $\{1, j, -1, -j\}$ minus the cancelled root at $z=1$ leave zeros at $z = j, -1, -j$, i.e. on the unit circle at angles $\pm\pi/2$ and $\pi$ — exactly the magnitude nulls (the vector from an on-circle zero to $e^{j\omega}$ has length zero there).

(c) Any sinusoid $A\cos(\omega n + \phi)$ with $\omega = \pi/2$ or $\omega = \pi$ produces zero steady-state output — e.g. $\{\dots, 1, 0, -1, 0, \dots\}$ and $\{\dots, 1, -1, 1, -1, \dots\}$: every 4 consecutive samples average to 0.

Exercise 3 — Transfer Function, Poles, ROC, and Stability

Problem: A causal system satisfies $$y[n] = x[n] - 0.5x[n-1] + 1.1y[n-1] - 0.3y[n-2].$$ (a) Find $H(z)$ and factor it. (b) Locate poles and zeros. (c) Give the ROC and decide stability. (d) Could a different (non-causal) system with the same $H(z)$ expression be stable?

Click to reveal solution

(a) Transforming with $Y$ terms collected:

$$H(z) = \frac{1 - 0.5z^{-1}}{1 - 1.1z^{-1} + 0.3z^{-2}} = \frac{1 - 0.5z^{-1}}{(1 - 0.5z^{-1})(1 - 0.6z^{-1})} = \frac{1}{1 - 0.6z^{-1}}$$

The denominator factors via $\lambda^2 - 1.1\lambda + 0.3 = (\lambda - 0.5)(\lambda - 0.6)$.

(b) Zero at $z = 0.5$, poles at $z = 0.5$ and $z = 0.6$. The pole at $0.5$ is cancelled by the zero (a pole-zero cancellation — "near poles and zeros cancel", here exactly). Effective system: single pole at $z = 0.6$, $h[n] = (0.6)^n u[n]$.

(c) Causal → ROC $|z| > 0.6$. This includes the unit circle → stable.

(d) The other ROC choice $|z| < 0.6$ (left-sided $h[n] = -(0.6)^n u[-n-1]$) does not include the unit circle → unstable. So for this $H(z)$ only the causal version is stable. (In general a stable non-causal choice exists only when some pole lies outside the unit circle and the annular ROC between pole radii still contains $|z| = 1$.)

Exercise 4 — Geometric Interpretation of a Resonator

Problem: Consider the two-pole resonator $$H(z) = \frac{1}{(1 - 0.9e^{j\pi/3}z^{-1})(1 - 0.9e^{-j\pi/3}z^{-1})}.$$ Using only pole-vector geometry (no full evaluation): (a) near which frequency does $|H(e^{j\omega})|$ peak, and why? (b) Estimate $|H|$ at $\omega = \pi/3$. (c) What happens to the peak as the pole radius $r \to 1$? (d) Sketch the expected phase behavior near the peak.

Click to reveal solution

(a) $|H(e^{j\omega})| = \dfrac{1}{|e^{j\omega} - 0.9e^{j\pi/3}|\;|e^{j\omega} - 0.9e^{-j\pi/3}|}$. The first pole-vector length is minimized when $e^{j\omega}$ passes closest to the pole, i.e. $\omega \approx \pi/3$ — the magnitude peaks there (the true maximum is a hair below $\pi/3$ because the conjugate pole's vector also shrinks slightly as $\omega$ decreases, but for $r = 0.9$ the shift is tiny).

(b) At $\omega = \pi/3$:

  • distance to the near pole: $|e^{j\pi/3} - 0.9e^{j\pi/3}| = 1 - 0.9 = 0.1$;
  • distance to the conjugate pole: $|e^{j\pi/3} - 0.9e^{-j\pi/3}|$. With $e^{j\pi/3} = 0.5 + j0.866$, $0.9e^{-j\pi/3} = 0.45 - j0.779$: difference $= 0.05 + j1.645$, length $\approx 1.646$.
$$|H(e^{j\pi/3})| \approx \frac{1}{0.1 \times 1.646} \approx 6.1$$

(c) As $r \to 1$ the near-pole distance $\to 0$, so the peak height $\to \infty$ (pole on the unit circle = oscillator) and the peak bandwidth shrinks $\propto (1-r)$.

(d) Phase = $-$(sum of pole-vector angles)$+2\omega$. As $e^{j\omega}$ sweeps past the near pole, that pole's vector angle rotates rapidly by nearly $\pi$, so $\theta(\omega)$ drops steeply through the resonance — and correspondingly $\tau_g = -d\theta/d\omega$ has a tall positive peak at $\omega \approx \pi/3$.

Exercise 5 — Phase Delay vs Group Delay

Problem: For the symmetric 3-pt filter $h[n] = \{\alpha, \beta, \alpha\}$ with $H(e^{j\omega}) = e^{-j\omega}(\beta + 2\alpha\cos\omega)$: (a) Show that wherever $\beta + 2\alpha\cos\omega > 0$, $\tau_p(\omega) = \tau_g(\omega) = 1$ sample, and explain why this filter causes no phase distortion. (b) What happens to $\theta(\omega)$, $\tau_p$, and $\tau_g$ at a frequency $\omega_z$ where $\beta + 2\alpha\cos\omega$ changes sign? (c) An AM signal $A[n]\cos(\omega_c n)$ with narrowband $A[n]$ passes through a system with $\theta(\omega_c) = -1.2$ rad, $\frac{d\theta}{d\omega}|_{\omega_c} = -8$, $\omega_c = 0.3$. By how many samples are the carrier and the envelope delayed?

Click to reveal solution

(a) Where the real factor is positive it contributes no phase, so $\theta(\omega) = -\omega$:

$$\tau_p = -\frac{-\omega}{\omega} = 1, \qquad \tau_g = -\frac{d(-\omega)}{d\omega} = 1$$

Both delays are constant and equal: every sinusoid and every envelope is delayed exactly 1 sample, so the output waveform shape is preserved (only amplitude-shaped by $|\beta + 2\alpha\cos\omega|$). Constant $\tau_g$ ⇔ linear phase ⇔ no phase distortion.

(b) At a sign change the phase jumps by $\pi$ (the magnitude $|\beta + 2\alpha\cos\omega|$ has a corner touching 0). $\tau_p$ becomes $\frac{\omega + \pi \cdot(\text{accumulated jumps})}{\omega}$-like — ill-defined/discontinuous at $\omega_z$ — and $\tau_g$, the derivative of a step, has an impulse there: group delay is simply not meaningful at frequencies where the response is zero (nothing gets through to be delayed).

(c) Carrier delay $\tau_p(\omega_c) = -\theta(\omega_c)/\omega_c = 1.2/0.3 = 4$ samples. Envelope delay $\tau_g(\omega_c) = -d\theta/d\omega = 8$ samples. The carrier slips 4 samples while the information envelope arrives 8 samples late.

Exercise 6 — MATLAB: freqz, grpdelay, zplane on the Lecture TF Example

Problem: For the lecture system $$H(z) = \frac{z^{-1} - 1.2z^{-2} + z^{-3}}{1 - 1.3z^{-1} + 1.04z^{-2} - 0.222z^{-3}},$$ write MATLAB code to (a) plot the log-magnitude, principal-value phase, and group delay over $0 \le \omega \le \pi$, and (b) draw the pole-zero plot. (c) From the plots, explain the deep magnitude notch and the adjacent peak near $\omega \approx 0.3\pi$, and the sign of the group delay around the notch.

Click to reveal solution
b = [0 1 -1.2 1];              % numerator  z^-1 - 1.2 z^-2 + z^-3
a = [1 -1.3 1.04 -0.222];      % denominator

[H, w]   = freqz(b, a, 1024);  % frequency response on [0, pi)
[gd, wg] = grpdelay(b, a, 1024);

figure;
subplot(3,1,1); plot(w/pi, 20*log10(abs(H)));
ylabel('dB'); title('Log magnitude'); grid on;
subplot(3,1,2); plot(w/pi, angle(H));
ylabel('radians'); title('Phase (principal value)'); grid on;
subplot(3,1,3); plot(wg/pi, gd);
ylabel('samples'); xlabel('\omega/\pi'); title('Group delay'); grid on;

figure; zplane(b, a);          % poles x, zeros o
% roots(b(2:end)) -> zeros 0.6 +/- 0.8i   (|z| = 1, angle 0.2952*pi)
% roots(a)        -> poles 0.5 +/- 0.7i, 0.3 (|z| = 0.86, angle 0.3026*pi)

Regenerated result (numpy/scipy equivalent of freqz/grpdelay):

2026-06-12T22:40:43.038722 image/svg+xml Matplotlib v3.10.8, https://matplotlib.org/ −40 −20 0 dB 20log₁₀|H(e^jω)| −3 −2 −1 0 radians Phase (principal value) 0 π/4 π/2 3π/4 π ω (rad/sample) 2 4 6 8 samples Group delay
Fig. 10-E6 — Log magnitude, principal phase, and group delay of the lecture transfer function.

(c) The zeros $0.6 \pm j0.8$ sit exactly on the unit circle at angle $0.295\pi$ → $|H| = 0$ there: $20\log_{10}|H| \to -\infty$, the deep notch. The complex poles $0.5 \pm j0.7$ sit at radius $0.86$ at almost the same angle ($0.303\pi$) → a short pole vector boosts the magnitude immediately around the notch, producing the adjacent peak. Around the on-circle zero the phase jumps by $\pi$ (sign change of the zero factor), so the group delay shows a large negative spike right at the notch — group delay is not meaningful at a frequency where nothing is transmitted; just outside the notch the pole dominates and $\tau_g$ is large and positive.