Polyphase FFT synthesis filter bank
DSP System Toolbox / Filtering / Multirate Filters
The Channel Synthesizer block merges multiple narrowband signals into a
broadband signal by using an FFT-based synthesis filter bank. The filter bank uses a
prototype lowpass filter and is implemented using a polyphase structure. You can specify
the filter coefficients directly or through design parameters. When you specify the
design parameters, the filter is designed using the designMultirateFIR
function.
This block also accepts variable-size inputs. That is, during the simulation, you can change the size of each input channel. The number of channels cannot change.
x
— Input narrowband signalsInput narrowband signals, which the channel synthesizer merges to form the broadband signal. Each narrowband signal forms a column in the input signal. The number of columns in the input correspond to the number of frequency bands of the filter bank. If the input is three-dimensional, each matrix corresponds to a separate channel.
This port is unnamed until you set Polyphase filter
specification to Coefficients
and select the Specify coefficients from input port
parameter.
Data Types: single
| double
Complex Number Support: Yes
coeffs
— Prototype lowpass filter coefficientsCoefficients of the prototype lowpass filter. There must be at least one coefficient per frequency band. If the length of the lowpass filter is less than the number of frequency bands, the block zero-pads the coefficients.
If you specify complex coefficients, the block designs a prototype filter that is centered at a nonzero frequency, also known as a bandpass filter. The modulated versions of the prototype bandpass filter appear with respect to the prototype filter and are wrapped around the frequency range [−Fs Fs].
This port appears when you set Polyphase filter
specification to
Coefficients
and select the
Specify coefficients from input port
parameter.
Data Types: single
| double
Complex Number Support: Yes
Port_1
— Broadband signalBroadband signal the channel synthesizer forms from the multiple input narrow subbands.
If the input is one of the following:
L-by-M matrix — The output is a L×M-by-1 vector. M is the number of frequency bands.
L-by-M-by-N matrix — The output is a L×M-by-N matrix.
Data Types: single
| double
Complex Number Support: Yes
If a parameter is listed as tunable, then you can change its value during simulation.
Polyphase filter specification
— Filter design parameters or coefficientsNumber of taps per band and stopband
attenuation
(default) | Coefficients
Number of taps per band and stopband
attenuation
— Specify the filter design
parameters through the Number of filter taps per
frequency band and Stopband attenuation
(dB) parameters. When you specify the design
parameters, the filter is designed using the designMultirateFIR
function.
Coefficients
— Specify the
filter coefficients directly using the Prototype
lowpass filter coefficients parameter or input
them through the coeffs port.
Number of filter taps per frequency band
— Number of filter coefficients per frequency band12
(default) | positive integerNumber of filter coefficients that each polyphase branch uses. The number of polyphase branches matches the number of frequency bands. The total number of filter coefficients for the prototype lowpass filter is given by the product of the number of frequency bands and the number of filter taps per frequency band. The number of frequency bands equals the number of columns in the input. For a given stopband attenuation, increasing the number of taps per band narrows the transition width of the filter. As a result, there is more usable bandwidth for each frequency band, at the expense of increased computation.
To enable this parameter, set Polyphase filter
specification to Number of taps per band and
stopband attenuation
.
Stopband attenuation (dB)
— Stopband attenuation80
(default) | positive real scalarStopband attenuation of the lowpass filter, in dB. This value controls the maximum amount of aliasing from one frequency band to the next. As the stopband attenuation increases, the passband ripple decreases.
To enable this parameter, set Polyphase filter
specification to Number of taps per band and
stopband attenuation
.
Specify coefficients from input port
— Flag to specify lowpass filter coefficientsWhen you select this check box, the lowpass filter coefficients are input through the coeffs port. When you clear this check box, the coefficients are specified on the block dialog through the Prototype lowpass filter coefficients parameter.
To enable this parameter, set Polyspace filter
specification to
Coefficients
.
Prototype lowpass filter coefficients
— Coefficients of prototype lowpass filterrcosdesign(0.25,6,8,'sqrt')
(default) | row vectorThis parameter specifies the coefficients of the prototype lowpass filter.
The default value is the coefficients vector that
rcosdesign(0.25,6,8,'sqrt')
returns. There must be at
least one coefficient per frequency band. If the length of the lowpass
filter is less than the number of frequency bands, the block zero-pads the
coefficients.
If you specify complex coefficients, the block designs a prototype filter that is centered at a nonzero frequency, also known as a bandpass filter. The modulated versions of the prototype bandpass filter appear with respect to the prototype filter and are wrapped around the frequency range [−Fs Fs].
Tunable: Yes
To enable this parameter, set Polyphase filter
specification to Coefficients
and clear the Specify coefficients from input port
parameter.
Complex Number Support: Yes
Simulate using
— Type of simulation to runInterpreted execution
(default) | Code generation
Interpreted execution
Simulate model using the MATLAB® interpreter. This option shortens startup time and
has faster simulation speed compared to Code
generation
.
Code generation
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 subsequent simulations.
Data Types |
|
Multidimensional Signals |
|
Variable-Size Signals |
|
The synthesis filter bank consists of a set of parallel bandpass filters that merge multiple input narrowband signals, y0(n), y1(n),..., yM-1(n) into a single broadband signal, v(n). The input narrowband signals are in the baseband. Each narrowband signal is interpolated to a higher sampling rate by using the upsampler, and then filtered by the lowpass filter. A complex exponential that follows the lowpass filter centers the baseband signal around wk.
To implement the synthesis filter bank efficiently, the synthesizer uses a prototype lowpass filter. This filter has an impulse response of h[n], a normalized two-sided bandwidth of 2π/M, and a cutoff frequency of π/M. M is the number of frequency bands, that is, the branches of the synthesis filter bank. This value corresponds to the FFT length that the filter bank uses. M can be high, in the order of 2048 or more. The stopband attenuation determines the minimum level of interference (aliasing) from one frequency band to another. The passband ripple must be small so that the input signal is not distorted in the passband.
The prototype lowpass filter models the first branch of the filter bank. The other M – 1 branches are modeled by filters that are modulated versions of the prototype filter. The modulation factor is given by .
The output of each bandpass filter forms a specific portion of the broadband signal. The output of all the branches are added to form the broadband signal, v(n).
The synthesis filter bank can be implemented efficiently using the polyphase structure.
To derive the polyphase structure, start with the transfer function of the prototype lowpass filter.
N+1 is the length of the prototype filter.
You can rearrange this equation as follows:
M is the number of polyphase components.
You can write this equation as:
E0(zM), E1(zM),..., EM-1(zM) are polyphase components of the prototype lowpass filter, H0(z).
The other filters in the filter bank, Hk(z), where k = 1, ..., M-1, are modulated versions of this prototype filter.
You can write the transfer function of the kth modulated bandpass filter as . Replacing z with zejwk,
N+1 is the length of the kth filter.
In polyphase form, the equation is as follows:
For all M channels in the filter bank, the MIMO transfer function, H(z), is given by:
Here is the multirate noble identity for interpolation, assuming that D = M:
For illustration, consider the first branch of the filter bank that contains the lowpass filter.
Replace H0(z) with its polyphase representation.
After applying the noble identity for interpolation, you can replace the delays, interpolation factor, and the adder with a commutator switch.
For all the M channels in the filter bank, the MIMO transfer function, H(z), is given by:
The matrix on the left is an IDFT matrix. With the IDFT matrix, the efficient implementation of the lowpass prototype based filter bank looks like the following.
[1] Harris, Fredric J, Multirate Signal Processing for Communication Systems, Prentice Hall PTR, 2004.
[2] Harris, F.J., Chris Dick, and Michael Rice. "Digital Receivers and Transmitters Using Polyphase Filter Banks for Wireless Communications." IEEE® Transactions on Microwave Theory and Techniques. Vol. 51, Number 4, April 2003.