# BILINEAR

## Purpose:

Converts a continuous system to a discrete system.

## Zero-Pole-Gain Syntax:

(Zd, Pd, Kd) = BILINEAR(Z, P, K, Fs, Fp)

 Z - A series containing the zeros of the continuous  transfer function. P - A series containing the poles of the continuous transfer function. K - A real. The gain constant. Fs - A real. The sampling frequency in Hertz. Fp - Optional. A real, the frequency in Hertz specifying at which point the frequency responses before and after mapping match exactly.

## State-Space Syntax:

(Ad, Bd, Cd, Dd) = BILINEAR(A, B, C, D, Fs, Fp)

 A,B,C,D - Matrices containing the continuous state-space representation of the filter to be transformed. Fs - A real. The sampling frequency in Hertz. Fp - Optional. A real, the frequency in Hertz specifying at which point the frequency responses before and after mapping match exactly.

## Transfer Function Syntax:

(b, a) = BILINEAR(NUM, DEN, Fs, Fp)

 NUM - A series containing the continuous numerator transfer function coefficients in descending powers of s. DEN - A series containing the continuous denominator transfer function coefficients in descending powers of s. Fs - A real. The sampling frequency in Hertz. Fp - Optional. A real, the frequency in Hertz specifying at which point the frequency responses before and after mapping match exactly.

## Returns:

For the Zero-Pole-Gain format, two series and a constant. Zd is the vector of zeros, Pd is the series of poles, and Kd is the gain constant.

For the State-Space format, Ad, Bd, Cd and Dd are the state-space representations of the Z-transform discrete equivalent filter.

For the Transfer Function format, b and a are series containing numerator and denominator transfer function coefficients.

## Example:

b = {100};

a = {1, 2, 100};

(b1, a1) = bilinear(b, a, 200);

W1: (h, f) = sfreq(b, a, 1024);xy(f, mag(h))

W2: (h1, f1) = zfreq(b1, a1, 8192, 200);xy(f1, mag(h1))

W1 displays the magnitude of the frequency response for the continuous system:

The system is converted to a digital system with a sample rate of 200 Hz where:

b1 == {0.000622, 0.001243, 0.000622}

a1 == {1.000000, -1.987570, 0.990056}

representing the system:

W2 displays the magnitude of the frequency response for the digital system.

## Example:

(zd, pd, kd) = bilinear(roots(b), roots(a), 100, 200);

zd == {-1, -1}

pd == {0.993785 + 0.04947i, 0.993785 – 0.04947i}

kd == 0.000622

Same as the previous example except the inputs are given in Zero-Pole-Gain form. Note that:

b1 == poly(zd)*kd == {0.000662, 0.001243, 0.000662}

a1 == poly(pd) == {1.000000, -1.987570, 0.990056}

indicating the same discrete system is returned.

## Remarks:

The bilinear transform converts a continuous, constant coefficient, time invariant analog system to a discrete, constant coefficient shift invariant digital system. In particular, the bilinear transform converts the analog system Ha (s) to a digital system Hd (z) with a sample period Ts = 1/Fs using the following mapping:

For continuous frequency Ω and normalized discrete frequency ω, the continuous frequency axis is mapped to the discrete unit circle such that:

The relationship between Ω and ω can be seen with:

Thus, the mapping of continuous frequency Ω to discrete frequency ω and the inverse mapping become:

For the Zero-Pole-Gain format, BILINEAR maps the zeros Z, poles P and gain K of the continuous system to zeros Zd, poles Pd and gain Kd the discrete system.

For the State-Space format, BILINEAR maps the continuous state space matrices A, B, C, D where:

to the discrete state space matrices Ad, Bd, Cd, Dd where:

For the Transfer Function format, BILINEAR maps the continuous system H(s) to the discrete system H(z) where:

This form represents the following discrete difference equation:

The bilinear transform of a stable continuous system always results in a stable discrete system.

FILTEQ

POLY

ROOTS

SFREQ

TF2SS

ZFREQ

ZPFCOEF