Professional Documents
Culture Documents
LAB 10
Instructions:
• All tasks must be completed in this lab session for full credit.
• Students must show the output and MATLAB code for each task to the instructor
before proceeding to the next task.
References:
1. FILTER STRUCTURES
Filter structures are realizations of the LTI systems in either hardware or software. We consider the class of LTI
systems that are described by linear constant-coefficient difference equations, i.e.
𝑁 𝑀
𝑌(𝑧) ∑𝑀
𝑘=0 𝑏𝑘 𝑧
−𝑘
𝐵(𝑧)
𝐻(𝑧) = = 𝑁 −𝑘
= . (2)
𝑋(𝑧) 1 + ∑𝑘=1 𝑎𝑘 𝑧 𝐴(𝑧)
The difference equation in (1) can be viewed as a computational algorithm, or a procedure, for determining the
output sequence 𝑦[𝑛] from the input sequence 𝑥[𝑛]. The computations in (1) can be rearranged, in various
ways, into equivalent sets of difference equations. Each set of equations defines a computation procedure, or an
algorithm, for implementation of the system. Different structures, obtained in this way, have varying
1. computational complexity of implementation,
2. memory requirements,
3. finite word-length effects.
Although these three are major factors in influencing the choice of the realization of a system, other factors,
such as whether the computations can be pipelined, or whether the structure lends itself to parallel processing,
may also play a role in the selection of a specific implementation.
2. Cascade-form: In this form, the system function 𝐻(𝑧) in equation (1) is factored into smaller second-
order sections, called biquads. The system function is then represented as a product of these biquads.
Each biquad is implemented in a direct-form, and the entire system function is implemented as a
cascade of biquad sections.
3. Parallel-form: This is similar to the cascade form, but after factorization, a partial fraction expansion is
used to represent 𝐻(𝑧) as a sum of smaller second-order sections. Each section is again implemented in
a direct-form, and the entire system function is implemented as a parallel network of sections.
IIR filters are generally described by the rational system function (or the direct-form structure), given in (2).
1.1.1 DIRECT-FORM
As the name suggests, the difference equation in (1) is implemented as given using delays, multipliers, and
adders.
The direct-form I structure implements numerator and denominator of the rational function H(z) separately with
a cascade connection between them. In particular, the system function can be rewritten as
𝑀
1
𝐻(𝑧) = ∑ 𝑏𝑘 𝑧 −𝑘 = 𝐻1 (𝑧)𝐻2 (𝑧), (3)
1+ ∑𝑁
𝑘=1 𝑎𝑘 𝑧
−𝑘
𝑘=0
where 𝐻1 (𝑧) describes the all-zero part and 𝐻2 (𝑧) described an all-pole part of 𝐻(𝑧). Then, the output response
can be written as
2
𝑉(𝑧)
𝑌(𝑧) = 𝐻(𝑧) 𝑋(𝑧) = 𝐻1 (𝑧)𝑋(𝑧) 𝐻2 (𝑧) = 𝑉(𝑧) 𝐻2 (𝑧) =
1 + ∑𝑁
𝑘=1 𝑎𝑘 𝑧
−𝑘
𝑁
where
𝑀 𝑀
−𝑘
𝑉(𝑧) = 𝐻1 (𝑧)𝑋(𝑧) = ∑ 𝑏𝑘 𝑧 𝑋(𝑧) ⟹ 𝑣[𝑛] = ∑ 𝑏𝑘 𝑥[𝑛 − 𝑘] . (5)
𝑘=0 𝑘=0
Combining (4) and (5), we get a set of difference equations that describes the direct-form I structure of an IIR
filter
𝑁 𝑀
Hence, as is apparent from (6), the direct-form I structure is a cascade interconnection of an all-zero system,
with input 𝑥[𝑛] and output 𝑣[𝑛], and an all-pole system, having input 𝑣[𝑛] and output 𝑦[𝑛].
where
𝑁
𝑋(𝑧)
𝑊(𝑧) = 𝐻2 (𝑧)𝑋(𝑧) = ⟹ 𝑊(𝑧) = − ∑ 𝑎𝑘 𝑧 −𝑘 𝑊(𝑧) + 𝑋(𝑧). (8)
1 + ∑𝑁
𝑘=1 𝑎 𝑘 𝑧 −𝑘
𝑘=1
Combining (7) and (8), we get a different set of difference equations that describes the direct-form II structure
of an IIR filter
𝑀 𝑁
Therefore, as is apparent from (9), the direct-form II structure is a cascade interconnection of an all-pole system,
with input 𝑥[𝑛] and output 𝑤[𝑛], and an all-pole system, having input 𝑤[𝑛] and output 𝑦[𝑛].
It should be noted that both direct-forms are equivalent from the input-output point of view. Internally,
however, they have different signals.
The implementations in (6) and (9) can be pictorially described by a block diagram representation using adders,
branches, branch gains (implementing scalar multiplication) and delay elements. It turns out that block diagram
representation of direct-form II structure requires half as many delay elements as are required by the direct-form
3
I structure. Moreover, an equivalent structure to the direct-form can be obtained using a procedure called
transposition. In this operation, three steps are performed:
MATLAB IMPLEMENTATION
In MATLAB, the direct-form structure is described by two row vectors: b containing the {𝑏𝑘 } coefficients and a
containing the {𝑎𝑘 } coefficients. The filter function uses these vectors to implement the transposed direct-form
II structure of the discrete-time IIR filter.
1.1.2 CASCADE-FORM
In this form, the system function 𝐻(𝑧) in (2) is written as a product of second-order sections with real
coefficients. This is done by factoring the numerator and denominator polynomials into their respective roots
and then combining either a complex conjugate root pair or any two real roots into second-order polynomials.
Then,
𝑏 𝑏 𝑏 𝐾=⌈𝑁/2⌉
∑𝑀 𝑏 𝑧 −𝑘 1 + 1 𝑧 −1 + 2 𝑧 −2 + ⋯ + 𝑀 𝑧 −𝑀 1 + 𝑏𝑘,1 𝑧 −1 + 𝑏𝑘,2 𝑧 −2
𝑘=0 𝑘 𝑏0 𝑏 0 𝑏0
𝐻(𝑧) = = 𝑏0 = 𝑏0 ∑ , (10)
1 + ∑𝑁
𝑘=1 𝑎𝑘 𝑧
−𝑘 1 + 𝑎1 𝑧 −1 + 𝑎2 𝑧 −2 + ⋯ + 𝑎𝑁 𝑧 −𝑁 1 + 𝑎𝑘,1 𝑧 −1 + 𝑎𝑘,2 𝑧 −2
𝑘=1
where ⌈. ⌉ denotes the integer ceiling operation, and 𝑏𝑘,1, 𝑏𝑘,2, 𝑎𝑘,1 , 𝑎𝑘,2 are real numbers representing the
coefficients of second-order sub-filters. The second-order filter
is called the 𝑘 th biquad section. The input to the 𝑘 th biquad section is the output from the (𝑘 − 1)th biquad
section, and the output from the 𝑘 th biquad is the input to the (𝑘 + 1)th biquad. Now each biquad section 𝐻𝑘 (𝑧)
can be implemented in direct-form II. The entire filter is then implemented as a cascade of biquads.
The set of difference equations describing the cascade structure of an IIR filter, in which each biquad is
implemented in direct-form II structure, is given by
𝑦0 [𝑛] = 𝑥[𝑛],
𝑤𝑘 [𝑛] = −𝑎𝑘1 𝑤𝑘 [𝑛 − 1] − 𝑎𝑘2 𝑤𝑘 [𝑛 − 2] + 𝑦𝑘−1 [𝑛],
(12)
𝑦𝑘 [𝑛] = 𝑤𝑘 [𝑛] + 𝑏𝑘1 𝑤𝑘 [𝑛 − 1] + 𝑏𝑘2 𝑤𝑘 [𝑛 − 2],
𝑦[𝑛] = 𝑦𝐾 [𝑛],
for 𝑘 = 1, 2, … , 𝐾.
4
MATLAB IMPLEMENTATION
Given the coefficients {𝑏𝑘 } and {𝑎𝑘 } of the direct-form filter, we have to obtain the coefficients 𝑏0 , 𝑏𝑘,1 , 𝑏𝑘,2 ,
𝑎𝑘,1 and 𝑎𝑘,2 . This is done by the following function dir2cas.
This function converts the b and a vectors into K×3 sized B and A matrices. It begins by computing b0, which is
equal to b0/a0 (assuming 𝑎0 ≠ 1). It then makes the vectors b and a of equal length by zero-padding the shorter
vector. This ensures that each biquad has a nonzero numerator and denominator. Next, it computes the roots of
the 𝐵(𝑧) and 𝐴(𝑧) polynomials. Using the cplxpair function, these roots are ordered in complex conjugate pairs.
Now every pair is converted back into a second-order numerator or denominator polynomial using the poly
function.
5
Q1) Why K = floor(N/2) in the above function as opposed to its definition in (10) ?
if 2*K == N
b = [b 0]; a = [a 0];
end
6
This function employs the filter function in a loop using the coefficients of each biquad stored in B and A
matrices. The input is scaled by b0, and the output of each filter operation is used as an input to the next filter
operation. The output of the final filter operation is the overall output.
The following MATLAB function, cas2dir, converts a cascade-form to a direct-form. This is a simple operation
that involves multiplication of several second-order polynomials. For this purpose, the MATLAB function conv
is used in a loop over K factors.
Q3) Justify the use of conv function for polynomial multiplication. Why the function my_conv (the one that
handles non-causal sequences) is not used ?
7
Task 1
Consider an IIR filter described by the following difference equation:
Use the above functions to obtain cascade-form realization of the filter. Also obtain direct-form realization from
the cascade-form realization. Write the corresponding system functions in the respective forms in the space
below.
Task 2
Find the response of the filter, using the cascade-form and direct-form realizations obtained in Task 1, for the
input sequence 𝑥[𝑛] = 𝑢[𝑛 + 2] − 𝑢[𝑛 − 3].
1.1.3 PARALLEL-FORM
In this form, the system function 𝐻(𝑧) is written as a sum of second-order sections using partial fraction
expansion.
𝑀−𝑁
𝐵(𝑧) 𝑏0 + 𝑏1 𝑧 −1 + 𝑏2 𝑧 −2 + ⋯ + 𝑏𝑀 𝑧 −𝑀 𝑏̃0 + 𝑏̃1 𝑧 −1 + ⋯ + 𝑏̃𝑀 𝑧 −𝑀
𝐻(𝑧) = = = ∑ 𝑐𝑘 𝑧 −𝑘 +
𝐴(𝑧) 1 + 𝑎1 𝑧 −1 + 𝑎2 𝑧 −2 + ⋯ + 𝑎𝑁 𝑧 −𝑁 ⏟1 + 𝑎1 𝑧 −1 + ⋯ + 𝑎𝑛 𝑧 −𝑁
⏟
𝑘=0
Proper Rational Fraction
Polynomial if 𝑀≥𝑁
𝑀−𝑁 𝐾=⌈𝑁/2⌉
−𝑘
𝑏𝑘,0 + 𝑏𝑘,1 𝑧 −1
𝐻(𝑧) = ∑ 𝑐𝑘 𝑧 + ∑ , (13)
1 + 𝑎𝑘,1 𝑧 −1 + 𝑎𝑘,2 𝑧 −2
⏟
𝑘=0 𝑘=1
Polynomial if 𝑀≥𝑁
where ⌈. ⌉ denotes the integer ceiling operation, and 𝑏𝑘,0, 𝑏𝑘,1, 𝑎𝑘,1 , 𝑎𝑘,2 are real numbers representing the
coefficients of second-order sub-filters. The second-order filter
8
is the 𝑘 th proper biquad section. The filter input is available to all biquad sections as well as to the polynomial
section if 𝑀 ≥ 𝑁 (which is an FIR part). The output from these sections is summed to form the filter output.
Now each biquad section 𝐻𝑘 (𝑧) can be implemented in direct-form II. Due to the summation of subsections, a
parallel structure can be built to realize 𝐻𝑘 (𝑧).
MATLAB IMPLEMENTATION
Given the coefficients {𝑏𝑘 } and {𝑎𝑘 } of the direct-form filter, we obtain the coefficients 𝑏𝑘,0, 𝑏𝑘,1, 𝑎𝑘,1 and 𝑎𝑘,2
using the following function dir2par.
The dir2cas function first computes the 𝑧-domain partial fraction expansion using the residuez function. The
pole-and-residue pairs need to be arranged into complex conjugate pole-and-residue pairs followed by real pole-
and-residue pairs. To do this, the cplxpair function is used, which sorts a complex array into complex conjugate
9
pairs. However, two consecutive calls to this function, one each for pole and residue arrays, will not guarantee
that poles and residues will correspond to each other. Therefore, a new cplxcomp function is developed, which
compares two shuffled complex arrays and returns the index of one array, which can be used to rearrange the
other array.
After collecting these pole-and-residue pairs, the dir2cas function computes the numerator and denominator of
the biquads by calling the residuez function in the reverse order.
These parallel-form coefficients are then used in the following function parfiltr, which implements the parallel-
form structure. The parfiltr function uses the filter function in a loop; employing the coefficients of each biquad
stored in the B and A matrices. The input is first filtered through the FIR part C and stored in the first row of a w
matrix. Outputs of all biquad filters are then computed for the same input and stored as subsequent rows in the
w matrix. Finally, all the columns of the w matrix are summed to yield the output.
10
w(i + 1, :) = filter (B (i, :), A (i, :), x);
end
y = sum(w);
To obtain direct-form from a parallel-form, the following function par2dir is used. It computes poles and
residues of each proper biquad and combines them into system poles and residues. Another call of the residuez
function in reverse order computes the numerator and denominator polynomials.
Task 3
Consider an IIR filter described by the difference equation in Task 1. Use the above functions to obtain parallel-
form realization of the filter. Also obtain direct-form realization from the parallel-form realization. Write the
system function of parallel-form structure in the space below.
11
Task 4
Find the response of the filter, using the parallel-form and direct-form realizations obtained in Task 3, for the
input sequence 𝑥[𝑛] = 𝑢[𝑛 + 2] − 𝑢[𝑛 − 3].
𝑏 , 0 ≤ 𝑘 ≤ 𝑀,
ℎ[𝑛] = { 𝑘 (16)
0, otherwise,
which is a linear convolution of finite support. The order of the filter is 𝑀, and the length of the filter (which is
equal to the number of coefficients) is 𝑀 + 1. The FIR filter structures are always stable, and they are relatively
simple compared to IIR structures. Furthermore, FIR filters can be designed to have a linear-phase response,
which is desirable in some applications. We will consider the following three structures.
1. Direct-form: In this form, the difference equation in (17) is implemented directly as given. Since the
denominator in (17) equals unity, there is only one direct-form structure. In MATLAB, the direct-form
FIR structure is described by the row vector b containing the {𝑏𝑘 } coefficients. The structure is
implemented by the filter function, in which the vector a is set to the scalar value 1.
2. Cascade-form: In this form, the system function 𝐻(𝑧) in (15) is factored into second-order
polynomials, which are then implemented in a cascade connection. This form is similar to the cascade-
form for IIR filters. In fact, FIR cascade-form structure can be obtained from IIR cascade-form structure
by setting 𝑎𝑘 = 0, 𝑘 = 1,2, … , 𝑁. As a result, the functions dir2cas and cas2dir can be used to obtain
FIR direct-form from FIR cascade-form and vice versa.
3. Linear-phase-form: Impulse response of an FIR filter, having linear-phase response, exhibits certain
symmetry conditions, which can be exploited to reduce the number of multiplications by about half.
1.2.1 LINEAR-PHASE-FORM
It is often desirable for an FIR filter to have linear phase response of the form
12
∠𝐻(𝜔) = 𝛽 − 𝛼𝜔, (18)
where 𝛼 and 𝛽 are constants. For a causal FIR filter with impulse response over the interval [0, 𝑀], the linear-
phase condition in (18) imposes the following symmetry conditions on the impulse response
𝛼
ℎ[𝑛] = ℎ[𝑀 − 𝑛], 𝑀= , 0 ≤ 𝑛 ≤ 𝑀. (19)
2
𝛼
ℎ[𝑛] = −ℎ[𝑀 − 𝑛], 𝑀= , 0 ≤ 𝑛 ≤ 𝑀. (20)
2
An impulse response that satisfies (19) (or (20)) is called symmetric (or antisymmetric) impulse response
impulse response. These symmetry conditions are exploited in the linear-phase-form structure for causal FIR
filters. Such a structure is essentially a direct-form structure with lesser number of scalar multiplications and so,
it can be implemented using the filter function in MATLAB.
Task 5
Write a function dir2LP that employs the symmetries in (19) and (20) to find the filter coefficients of the linear-
phase-form structure, from the direct-form coefficients {𝑏𝑘 }, for a causal linear-phase FIR filter. The structure
of the function is given below.
to find the filter coefficients B. For 𝑥[𝑛] = 𝑢[𝑛 + 2] − 𝑢[𝑛 − 3], find the response of the filter using the direct-
form and linear-phase-form structures and verify that both realizations give the same output sequence.
13