Skip to main content

Bilinear Butterworth LPF then convert to HPF

Short answer

After pre-warping (T=2 s), N=3 and Ωc=0.5177 rad/s. Low-pass H(z) numerator [0.05119,0.15356,0.15356,0.05119], denominator [1,-1.13773,0.68077,-0.13354]. High-pass with α=-0.4774: numerator [0.27624,-0.82871,0.82871,-0.27624], denominator [1,-0.68374,0.45763,-0.06853].

Design a low pass discrete time Butterworth filter applying bilinear transformation having specifications: pass band frequency (ωp) = 0.25π radians, stop band frequency (ωs) = 0.55π radians, pass band ripple (δp) = 0.11 and stop band ripple (δs) = 0.21. Consider sampling frequency 0.5 Hz. Also, convert the obtained digital low-pass filter to high-pass filter with new pass band frequency (ω'p) = 0.45π using digital domain transformation.

Step 1: specifications

Low-pass Butterworth, ωp = 0.25π, ωs = 0.55π. Ripples δp = 0.11 and δs = 0.21 are read as |H(ωp)| ≥ 1 − δp = 0.89 and |H(ωs)| ≤ δs = 0.21. Sampling frequency 0.5 Hz gives T = 2 s (so 2/T = 1).

Step 2: pre-warp the edges (bilinear: Ω = (2/T) tan(ω/2), T = 2 s)

  • Ωp = (2/2) tan(0.25π/2) = 0.4142 rad/s
  • Ωs = (2/2) tan(0.55π/2) = 1.1708 rad/s

Step 3: order of the Butterworth filter

N ≥ log[(1/0.21² − 1)/(1/0.89² − 1)] / (2 log(Ωs/Ωp)) = log[21.6757/0.2625] / (2 log 2.8267) = 2.1239

So N = 3.

Step 4: cut-off frequency

Using the pass-band condition (1 + (Ωp/Ωc)^(2N)) = 1/0.89²: Ωc = Ωp / (0.2625)^(1/6) = 0.5177 rad/s (This meets the pass-band exactly and exceeds the stop-band requirement.)

Step 5: analog transfer function

Poles of the normalised filter lie on the left half of the circle of radius Ωc. Pairing complex poles:

H(s) = 0.1387 / [(s + 0.5177) (s² + 0.5177 s + 0.2680)]

Step 6: bilinear transformation

Replace s by (2/T)(1 − z⁻¹)/(1 + z⁻¹) = 1(1 − z⁻¹)/(1 + z⁻¹) in each factor:

  • H₀(z) = 0.3411(1 + z⁻¹) / (1 − 0.3178 z⁻¹)
  • H1(z) = 0.15007(1 + 2z⁻¹ + z⁻²) / (1 − 0.8199 z⁻¹ + 0.4202 z⁻²)

H(z) = H0(z) · H1(z)

Multiplied out:

        0.05119 0.15356 0.15356 0.05119   (numerator coefficients, powers z⁰ … z⁻3)
H(z) = ---------------------------------------------
        1.00000 -1.13773 0.68077 -0.13354   (denominator coefficients)

Step 7: check

|H(e^jω)| at ωp = 0.8900 (required ≥ 0.89); at ωs = 0.0861 (required ≤ 0.21). Both conditions are satisfied.

Conversion to a high-pass filter (ω'p = 0.45π)

The digital low-pass to high-pass transformation (Constantinides) is

z⁻¹ → −(z⁻¹ + α) / (1 + α z⁻¹), α = −cos[(ωp + ω'p)/2] / cos[(ωp − ω'p)/2]

where ωp = 0.25π is the pass-band edge of the low-pass design and ω'p = 0.45π the new pass-band edge.

α = −cos(0.35π) / cos(−0.1π) = −0.4540 / 0.9511 = -0.4774

Substituting into the third-order H(z) and simplifying:

        0.27624 -0.82871 0.82871 -0.27624
H'(z) = ------------------------------------------   (powers of z⁻¹)
        1.00000 -0.68374 0.45763 -0.06853

that is,

H'(z) = (0.2762 − 0.8287z⁻¹ + 0.8287z⁻² − 0.2762z⁻³) / (1 − 0.6837z⁻¹ + 0.4576z⁻² − 0.0685z⁻³)

Check: |H'(e^jω)| = 0.890 at ω = 0.45π (equal to the low-pass value 0.89 at 0.25π), 0.000 at ω = 0 and 1.000 at ω = π, so it is a high-pass filter.

Answer: N = 3, Ωc = 0.5177 rad/s; low-pass H(z) as above; high-pass with α = -0.4774.

✓ Answer checked by Claude Opus 5.5 (high effort)

All Digital Signal Analysis and Processing chapter 6 questions →