# FIR Halfband Decimator

Decimate signal using polyphase FIR halfband filter

• Libraries:
DSP System Toolbox / Filtering / Multirate Filters

## Description

The FIR Halfband Decimator block performs polyphase decimation of the input signal by a factor of 2. The block uses an FIR equiripple design or a Kaiser window design to construct the halfband filters. The implementation takes advantage of the zero-valued coefficients of the FIR halfband filter, making one of the polyphase branches a delay. You can use the block to implement the analysis portion of a two-band filter bank to separate a signal into lowpass and highpass subbands. For more information, see Algorithms.

The block supports fixed-point operations and ARM® Cortex® code generation. For more information on ARM Cortex code generation, see Code Generation for ARM Cortex-M and ARM Cortex-A Processors.

## Ports

### Input

expand all

Specify the input signal as a column vector or a matrix of size P-by-Q. 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 variable-size input signals.

Data Types: `single` | `double` | `int8` | `int16` | `int32` | `int64` | `uint8` | `uint16` | `uint32` | `uint64` | `fixed point`
Complex Number Support: Yes

### Output

expand all

Lowpass subband of the decimator output, returned as a column vector or a matrix of size P/2-by-Q. As the filter is a halfband filter, the downsampling factor is always 2.

When the output is fixed-point, it is signed only.

This port is unnamed until you select the Output highpass subband parameter.

Data Types: `single` | `double` | `int8` | `int16` | `int32` | `int64` | `fixed point`
Complex Number Support: Yes

Highpass subband of the decimator output, returned as a column vector or a matrix of size P/2-by-Q. As the filter is a halfband filter, the downsampling factor is always 2.

When the output is fixed-point, it is signed only.

#### Dependency

To enable this port, select the Output highpass subband parameter.

Data Types: `single` | `double` | `int8` | `int16` | `int32` | `int64` | `fixed point`
Complex Number Support: Yes

## Parameters

expand all

### Main Tab

Select the parameters that the block uses to design the FIR halfband filter.

• ```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 through the Numerator parameter.

Specify the filter order as an even positive integer.

#### Dependencies

To enable this parameter, set Filter specification to ```Filter order and transition width``` or ```Filter order and stopband attenuation```.

Specify the transition width 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```.

Specify the stopband attenuation 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```.

Specify the FIR halfband filter coefficients directly as a row vector. The coefficients must comply with the FIR halfband impulse response format. If (`length`(`Numerator`) − 1)/2 is even, where (`length`(`Numerator`) − 1) is the filter order, every other coefficient starting with the first coefficient must be 0 except the center coefficient which must be 0.5. If (`length`(`Numerator`) − 1)/2 is odd, the sequence of alternating zeros with 0.5 at the center starts at the second coefficient.

#### Dependencies

To enable this parameter, set Filter specification to `Coefficients`.

Specify the filter design method as one of the following:

• `Auto` –– The algorithm automatically chooses the filter design method depending on the filter design parameters. The algorithm uses the equiripple or the Kaiser window method to design the filter.

If the design constraints are very tight, such as very high stopband attenuation or very narrow transition width, then the algorithm automatically chooses the Kaiser method, as this method is optimal for designing filters with very tight specifications. However, if the design constraints are not tight, then the algorithm chooses the equiripple method.

When you set the Design method parameter to `Auto`, you can determine the method used by the algorithm by examining the passband and stopband ripple characteristics of the designed filter. If the block used the equiripple method, the passband and stopband ripples of the designed filter have a constant amplitude in the frequency response. If the filter design method the block chooses in the `Auto` mode is not suitable for your application, manually specify the Design method as `Equiripple` or `Kaiser`.

• `Equiripple` –– The algorithm uses the equiripple method.

• `Kaiser` –– The algorithm uses the Kaiser window method.

#### Dependencies

To enable this parameter, set Filter specification to ```Filter order and stopband attenuation```, ```Filter order and transition width```, or ```Transition width and stopband attenuation```.

When you select this check box, the block acts as an analysis filter bank and analyzes the input signal into highpass and lowpass subbands. When you clear this check box, the block acts as an FIR halfband decimator.

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).

Specify the sample rate of the input signal as a positive scalar in Hz.

#### Dependencies

To enable this parameter, clear the Inherit sample rate from input parameter.

Click this button to open the Filter Visualization Tool (FVTool) and display the magnitude and phase response of the FIR 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 .

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```.

### Data Types Tab

Select the rounding mode for output fixed-point operations. The default is `Floor`.

Specify the fixed-point data type of the coefficients as one of the following:

• `fixdt(1,16)` (default) — Signed fixed-point data type of word length `16` with binary point scaling. The block determines the fraction length automatically from the coefficient values in such a way that the coefficients occupy maximum representable range without overflowing.

• `fixdt(1,16,0)` — Signed fixed-point data type of word length `16` and fraction length `0`. You can change the fraction length to any other integer value.

• `<data type expression>` — Specify the coefficients data type by using an expression that evaluates to a data type object. For example, `numerictype`(`fixdt`(```[ ]```,`18`, `15`)). Specify the sign mode of this data type as `[ ]` or true.

• `Refresh Data Type` — Refresh to the default data type.

Click the button to display the data type assistant, which helps you set the coefficients data type.

## Block Characteristics

 Data Types `double` | `fixed point` | `integer` | `single` Direct Feedthrough `no` Multidimensional Signals `no` Variable-Size Signals `yes` Zero-Crossing Detection `no`

expand all

expand all

## Version History

Introduced in R2015b