IIR Halfband Decimator
Decimate signal using polyphase IIR halfband filter
Libraries:
DSP System Toolbox /
Filtering /
Multirate Filters
Description
The IIR Halfband Decimator block performs polyphase decimation of the input signal by a factor of 2. To design the halfband filter, you can specify the block to use an elliptic design or a quasilinear phase design. The block uses these design methods to compute the filter coefficients. To filter the inputs, the block uses a polyphase structure. The allpass filters in the polyphase structure are in a minimum multiplier form.
Elliptic design introduces nonlinear phase and creates the filter using fewer coefficients than the quasilinear design. Quasilinear phase design overcomes phase nonlinearity at the cost of additional coefficients.
Alternatively, instead of designing the halfband filter using a design method, you can specify the filter coefficients directly. When you choose this option, the allpass filters in the two branches of the polyphase implementation can be in a minimum multiplier form or a wave digital form.
You can also use the block to implement the analysis portion of a twoband filter bank to filter a signal into lowpass and highpass subbands. For more details, see Algorithms.
Ports
Input
x — Input signal
column vector  matrix
Specify the input signal as a column vector or a matrix of size PbyQ. If the input signal is a matrix, the block treats each column of the matrix as an independent channel. The number of rows in the input signal must be a multiple of 2.
This block supports variablesize input signals.
This port is unnamed until you select the Specify coefficients from input port parameter.
Data Types: single
 double
Complex Number Support: Yes
coeffs1 — Branch 1 allpass polynomial coefficients
Nby1
vector  Nby2
matrix
Specify the allpass polynomial filter coefficients of the first branch as an
Nby1
vector or
Nby2
matrix of
N firstorder or secondorder allpass
sections.
Dependencies
To enable this parameter, set:
Filter specification to
Coefficients
Internal allpass structure to
Minimum multiplier
Clear the Make the first branch a pure delay parameter
Select the Specify coefficients from input port parameter
Data Types: single
 double
 int8
 int16
 int32
 int64
 uint8
 uint16
 uint32
 uint64
 fixed point
coeffs2 — Branch 2 allpass polynomial coefficients
Nby1
vector  Nby2
matrix
Specify the allpass polynomial filter coefficients of the second branch as an
Nby1
vector or
Nby2
matrix of
N firstorder or secondorder allpass
sections.
Dependencies
To enable this parameter, set:
Filter specification to
Coefficients
Internal allpass structure to
Minimum multiplier
Select the Specify coefficients from input port parameter
Data Types: single
 double
 int8
 int16
 int32
 int64
 uint8
 uint16
 uint32
 uint64
 fixed point
Output
LP — Lowpass subband of decimator output
column vector  matrix
Lowpass subband of the decimator output, returned as a column vector or a matrix of size P/2byQ. As the filter is a halfband filter, the downsampling factor is always 2.
This port is unnamed until you select the Output highpass subband parameter.
Data Types: single
 double
Complex Number Support: Yes
HP — Highpass subband of decimator output
column vector  matrix
Highpass subband of the decimator output, returned as a column vector or a matrix of size P/2byQ. As the filter is a halfband filter, the downsampling factor is always 2.
This port is unnamed until you select the Output highpass subband parameter.
Data Types: single
 double
Complex Number Support: Yes
Parameters
Filter specification — Filter design parameters
Transition width and stopband
attenuation
(default)  Filter order and transition width
 Filter order and stopband attenuation
 Coefficients
Select the parameters that the block uses to design the IIR halfband filter. Because the filter design has only two degrees of freedom, you can specify only two of the three parameters:
Transition width and stopband attenuation
(default) — Design the filter using Transition width (Hz) and Stopband attenuation (dB). This design is the minimum order design.Filter order and transition width
— Design the filter using Filter order and Transition width (Hz).Filter order and stopband attenuation
— Design the filter using Filter order and Stopband attenuation (dB).Coefficients
— Specify the filter coefficients directly using the enabled parameters.
Transition width (Hz) — Transition width in Hz
4.1e3
(default)  positive real scalar
Specify the transition width of the IIR halfband filter as a real positive scalar in Hz. The transition width must be less than 1/2 the sample rate of the input signal.
Dependencies
To enable this parameter, set Filter
specification to Filter order and transition
width
or Transition width and stopband
attenuation
.
Filter order — Order of the IIR halfband filter
9 (default)  positive integer
Specify the filter order as a finite positive integer. If you set Design
method to Elliptic
, then
Filter order must be an odd integer greater than
one. If you set Design method to
Quasilinear phase
, then Filter
order must be a multiple of four.
Dependencies
To enable this parameter, set Filter specification to
Filter order and transition width
or
Filter order and stopband
attenuation
.
Stopband attenuation (dB) — Minimum attenuation needed in stopband
80 (default)  positive real scalar
Specify the minimum attenuation needed in the stopband of the IIR halfband filter as a real positive scalar in dB.
Dependencies
To enable this parameter, set Filter
specification to Filter order and stopband
attenuation
or Transition width and
stopband attenuation
.
Design method — Design method
Elliptic
(default)  Quasilinear phase
Specify the design method for the IIR halfband filter.
Elliptic
— The filter has a nonlinear phase and uses few coefficients.Quasilinear phase
— The first branch of the polyphase filter structure is a pure delay, which results in an approximately linear phase response.
Dependencies
To enable this parameter, set Filter specification to any option
except Coefficients
.
Internal allpass structure — Internal allpass filter implementation structure
Minimum multiplier
(default)  Wave Digital Filter
Specify the internal allpass filter implementation structure as Minimum
multiplier
or Wave Digital
Filter
. Each structure uses a different coefficients set,
independently stored in the corresponding coefficients property.
Dependencies
To enable this parameter, set Filter specification to
Coefficients
.
Make the first branch a pure delay — Make first branch a pure delay
off (default)  on
When you select this check box, the first branch of the polyphase filter structure becomes a pure delay, and the Branch 1 allpass polynomial coefficients and Branch 1 Wave Digital coefficients parameters do not apply.
By default, this check box is not selected.
Dependencies
To enable this parameter, set Filter specification to
Coefficients
.
Delay length in samples for branch 1 — Length of delay
1
(default)  positive scalar
Specify the length of the first branch delay as a positive scalar.
Dependencies
To enable this parameter, set:
Filter specification to
Coefficients
Select the Make the first branch a pure delay parameter
Specify coefficients from input port — Specify coefficients from input port
off (default)  on
When you select this check box, you can input the branch 1 allpass polynomial coefficients and branch 2 allpass polynomial coefficients through the input ports coeffs1 and coeffs2. When you clear this check box, you specify the coefficients in the block dialog box through the Branch 1 allpass polynomial coefficients and Branch 2 allpass polynomial coefficients parameters.
Dependencies
To enable this parameter, set:
Filter specification to
Coefficients
Internal allpass structure to
Minimum multiplier
Branch 1 allpass polynomial coefficients — Allpass polynomial filter coefficients of first branch
[0.1284563; 0.7906755]
(default)  Nby1
 Nby2
Specify the allpass polynomial filter coefficients of the first branch as an
Nby1
vector or
Nby2
matrix of
N firstorder or secondorder allpass
sections.
This parameter is tunable, that is, you can change its value during simulation.
Tunable: Yes
Dependencies
To enable this parameter, set:
Filter specification to
Coefficients
Internal allpass structure to
Minimum multiplier
Clear the Make the first branch a pure delay parameter
Clear the Specify coefficients from input port parameter
Branch 2 allpass polynomial coefficients — Allpass polynomial filter coefficients of second branch
[0.4295667]
(default)  Nby1
 Nby2
Specify the allpass polynomial filter coefficients of the second branch as an
Nby1
vector or
Nby2
matrix of
N firstorder or secondorder allpass
sections.
This parameter is tunable, that is, you can change its value during simulation.
Tunable: Yes
Dependencies
To enable this parameter, set:
Filter specification to
Coefficients
Internal allpass structure to
Minimum multiplier
Clear the Specify coefficients from input port parameter
Branch 1 Wave Digital coefficients — Allpass filter coefficients of first branch in wave digital filter form
[0.1284563; 0.7906755]
(default)  Nby1
 Nby2
Specify the allpass filter coefficients of the first branch in wave
digital filter (WDF) form as an Nby1
vector or Nby2
matrix of
N firstorder or secondorder allpass
sections.
The magnitude of each WDF coefficient must not be greater than 1.
Dependencies
To enable this parameter, set:
Filter specification to
Coefficients
Internal allpass structure to
Wave Digital Filter
Clear the Make the first branch a pure delay parameter
Branch 2 Wave Digital coefficients — Allpass filter coefficients of second branch in wave digital filter form
[0.4295667]
(default)  Nby1
 Nby2
Specify the allpass filter coefficients of the second branch in wave
digital filter form as an Nby1
vector or Nby2
matrix of
N firstorder or secondorder allpass
sections.
The magnitude of each WDF coefficient must not be greater than 1.
Dependencies
To enable this parameter, set:
Filter specification to
Coefficients
Internal allpass structure to
Wave Digital Filter
Last section of branch 2 is first order — Last section of branch 2 is first order
off (default)  on
When you select this check box, the block treats the last section of the second branch as
a first order section. When the coefficients of the second branch are in an
Nby2
matrix, the block ignores
the second element of the last row of the matrix. The last section of the
second branch then becomes a firstorder section.
When you clear this check box, the block treats the last section of the second branch as
a secondorder section. When the coefficients of the second branch are in an
Nby1
matrix, the block ignores
this parameter.
Dependencies
To enable this parameter, set Filter specification to
Coefficients
.
Output highpass subband — Output highpass subband
off (default)  on
When you select this check box, the block acts as an analysis filter bank, producing two powercomplementary outputs. When you clear this check box, the block acts as an IIR halfband decimator and accepts a single vector or matrix as input.
Inherit sample rate from input — Inherit sample rate from input signal
off (default)  on
When you select this check box, the block inherits its sample rate from the input signal. When you clear this check box, you specify the sample rate in Input sample rate (Hz).
Input sample rate (Hz) — Sample rate of input signal
44100 (default)  positive real scalar
Specify the sample rate of the input signal as a scalar in Hz.
Dependencies
To enable this parameter, clear the Inherit sample rate from input parameter.
View Filter Response — View Filter Response
button
Click this button to open the Filter Visualization Tool (FVTool) and display the magnitude and phase response of the IIR Halfband Decimator. The response is based on the values you specify in the block parameters dialog box. Changes made to these parameters update FVTool.
To update the magnitude response while FVTool is running, modify the dialog box parameters and click Apply.
Simulate using — Simulate using
Code generation
(default)  Interpreted execution
Specify the type of simulation to run. You can set this parameter to:
Code generation
(default)Simulate model using generated C code. The first time you run a simulation, Simulink^{®} generates C code for the block. The C code is reused for subsequent simulations, as long as the model does not change. This option requires additional startup time but provides faster simulation speed than
Interpreted execution
.Interpreted execution
Simulate model using the MATLAB^{®} interpreter. This option shortens startup time but has slower simulation speed than
Code generation
.
Block Characteristics
Data Types 

Direct Feedthrough 

Multidimensional Signals 

VariableSize Signals 

ZeroCrossing Detection 

Algorithms
Polyphase Implementation with Halfband Filters
When you filter your signal, the IIR halfband decimator uses an efficient polyphase implementation for halfband filters. You can use the polyphase implementation to move the downsample operation before filtering. This change enables you to filter at a lower sampling rate.
IIR halfband filters are generally modeled using two parallel allpass filter branches.
$$H(z)=0.5*[{A}_{1}({z}^{2})+{z}^{1}{A}_{2}({z}^{2})]$$
Elliptic Design
The allpass filters for elliptic IIR halfband filter are given as
$${A}_{1}(z)={\displaystyle \prod _{k=1}^{{K}_{1}}\frac{{a}_{k}^{(1)}+{z}^{1}}{1+{a}_{k}^{(1)}{z}^{1}}}$$
$${A}_{2}(z)={\displaystyle \prod _{k=1}^{{K}_{2}}\frac{{a}_{k}^{(2)}+{z}^{1}}{1+{a}_{k}^{(2)}{z}^{1}}}$$
QuasiLinear Phase Design
To achieve a nearlinear phase response for IIR halfband filters, make one of the branches a pure delay. In this design, the cost of the filter increases.
The allpass filters for the quasilinear phase IIR halfband filter are
$${A}_{1}(z)={z}^{k}$$
where k is the length of the delay.
$${A}_{2}(z)={\displaystyle \prod _{K=1}^{{K}_{2}^{(1)}}\frac{{a}_{k}+{z}^{1}}{1+{a}_{k}{z}^{1}}}{\displaystyle \prod _{K=1}^{{K}_{2}^{(2)}}\frac{{c}_{k}+{b}_{k}{z}^{1}+{z}^{2}}{1+{b}_{k}{z}^{1}+{c}_{k}{z}^{2}}}$$
where N is the order of the IIR halfband filter.
You can represent filtering the input signal and then downsampling it by 2 using this figure.
Using the multirate noble identity for downsampling, you can move the downsampling operation before the filtering operation. This change enables you to filter at a lower rate.
To implement the halfband decimator efficiently, this algorithm replaces the delay block and downsampling operator with a commutator switch.
Analysis Filter Bank
The transfer function of the complementary highpass filter branch of the analysis filter bank is given by
$$G(z)=0.5*[{A}_{1}({z}^{2}){z}^{1}{A}_{2}({z}^{2})]$$
You can represent the analysis filter bank as in this diagram.
The IIR halfband decimator generates two powercomplementary output signals by adding and subtracting the two polyphase branch outputs respectively.
To summarize, the IIR halfband decimator:
Decimates the input prior to filtering.
Acts as an analysis filter bank.
Has a nonlinear phase response and uses few coefficients with the elliptic design method.
Has nearlinear phase response at the cost of additional coefficients with the quasilinear phase design method, where one of the branches is a pure delay
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using Simulink® Coder™.
Version History
Introduced in R2015b
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
 América Latina (Español)
 Canada (English)
 United States (English)
Europe
 Belgium (English)
 Denmark (English)
 Deutschland (Deutsch)
 España (Español)
 Finland (English)
 France (Français)
 Ireland (English)
 Italia (Italiano)
 Luxembourg (English)
 Netherlands (English)
 Norway (English)
 Österreich (Deutsch)
 Portugal (English)
 Sweden (English)
 Switzerland
 United Kingdom (English)