Channel Synthesizer
Polyphase FFT synthesis filter bank
 Library:
DSP System Toolbox / Filtering / Multirate Filters
Description
The Channel Synthesizer block merges multiple narrowband signals into a
broadband signal by using an FFTbased 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 variablesize inputs. That is, during the simulation, you can change the size of each input channel. The number of channels cannot change.
Ports
Input
x
— Input narrowband signals
LbyM matrix  LbyMbyN
array
Input 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 threedimensional, 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 coefficients
row vector
Coefficients 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 zeropads 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 [−F_{s} F_{s}].
Dependencies
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
Output
Port_1
— Broadband signal
L×Mby1 vector  L×MbyN matrix
Broadband signal the channel synthesizer forms from the multiple input narrow subbands.
If the input is one of the following:
LbyM matrix — The output is a L×Mby1 vector. M is the number of frequency bands.
LbyMbyN matrix — The output is a L×MbyN matrix.
Data Types: single
 double
Complex Number Support: Yes
Parameters
If a parameter is listed as tunable, then you can change its value during simulation.
Polyphase filter specification
— Filter design parameters or coefficients
Number 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 thedesignMultirateFIR
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 band
12
(default)  positive integer
Number 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.
Dependencies
To enable this parameter, set Polyphase filter
specification to Number of taps per band and
stopband attenuation
.
Stopband attenuation (dB)
— Stopband attenuation
80
(default)  positive real scalar
Stopband 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.
Dependencies
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 coefficients
off (default)  on
When 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.
Dependencies
To enable this parameter, set Polyspace filter
specification to
Coefficients
.
Prototype lowpass filter coefficients
— Coefficients of prototype lowpass filter
rcosdesign(0.25,6,8,'sqrt')
(default)  row vector
This 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 zeropads 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 [−F_{s} F_{s}].
Tunable: Yes
Dependencies
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 run
Interpreted execution
(default)  Code generation
Type of simulation to run. You can set this parameter to:
Interpreted execution
: Simulate model using the MATLAB^{®} interpreter. This option shortens startup time.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.
Model Examples
Block Characteristics
Data Types 

Multidimensional Signals 

VariableSize Signals 

More About
Synthesis Filter Bank
The synthesis filter bank consists of a set of parallel bandpass filters that merge multiple input narrowband signals, y_{0}[m], y_{1}[m], … , y_{M1}[m] 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 w_{k}.
Prototype Lowpass Filter
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 twosided 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 $${e}^{j{w}_{k}n},\text{\hspace{1em}}{w}_{k}=2\pi k/M,\text{\hspace{1em}}k=0,1,\mathrm{...},M1$$.
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].
Algorithms
Polyphase Implementation
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.
$${H}_{0}(z)={b}_{0}+{b}_{1}{z}^{1}+\mathrm{...}+{b}_{N}{z}^{N}$$
N + 1 is the length of the prototype filter.
You can rearrange this equation as follows:
$${H}_{0}(z)=\begin{array}{c}\left({b}_{0}+{b}_{M}{z}^{M}+{b}_{2M}{z}^{2M}+\mathrm{..}+{b}_{NM+1}{z}^{(NM+1)}\right)+\\ {z}^{1}\left({b}_{1}+{b}_{M+1}{z}^{M}+{b}_{2M+1}{z}^{2M}+\mathrm{..}+{b}_{NM+2}{z}^{(NM+1)}\right)+\\ \begin{array}{c}\vdots \\ {z}^{(M1)}\left({b}_{M1}+{b}_{2M1}{z}^{M}+{b}_{3M1}{z}^{2M}+\mathrm{..}+{b}_{N}{z}^{(NM+1)}\right)\end{array}\end{array}$$
M is the number of polyphase components.
You can write this equation as:
$${H}_{0}(z)={E}_{0}({z}^{M})+{z}^{1}{E}_{1}({z}^{M})+\mathrm{...}+{z}^{(M1)}{E}_{M1}({z}^{M})$$
E_{0}(z^{M}), E_{1}(z^{M}), … , E_{M1}(z^{M}) are polyphase components of the prototype lowpass filter, H_{0}(z).
The other filters in the filter bank, H_{k}(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 $${H}_{k}(z)={H}_{0}(z{e}^{j{w}_{k}})$$. Replacing z with ze^{jwk},
$${H}_{k}(z)={h}_{0}+{h}_{1}{e}^{jwk}{z}^{1}+{h}_{2}{e}^{j2wk}{z}^{2}\mathrm{...}+{h}_{N}{e}^{jNwk}{z}^{N}$$
N + 1 is the length of the kth filter.
In polyphase form, the equation is as follows:
$${H}_{k}(z)=\left[1\text{\hspace{1em}}{e}^{j{w}_{k}}\text{\hspace{1em}}{e}^{j2{w}_{k}}\text{\hspace{1em}}\mathrm{...}\text{\hspace{1em}}{e}^{j(M1){w}_{k}}\right]\left[\begin{array}{c}{E}_{0}({z}^{M})\\ {z}^{1}{E}_{1}({z}^{M})\\ \vdots \\ {z}^{(M1)}{E}_{M1}({z}^{M})\end{array}\right]$$
For all M channels in the filter bank, the MIMO transfer function, H(z), is given by:
$$H(z)=\left[\begin{array}{c}\begin{array}{lllll}1\hfill & 1\hfill & 1\hfill & \mathrm{...}\hfill & 1\hfill \end{array}\\ \begin{array}{lllll}1\hfill & {e}^{j{w}_{1}}\hfill & {e}^{j2{w}_{1}}\hfill & \mathrm{...}\hfill & {e}^{j(M1){w}_{1}}\hfill \end{array}\\ \vdots \\ \begin{array}{lllll}1\hfill & {e}^{j{w}_{M1}}\hfill & {e}^{j2{w}_{M1}}\hfill & \mathrm{...}\hfill & {e}^{j(M1){w}_{M1}}\hfill \end{array}\end{array}\right]\left[\begin{array}{c}{E}_{0}({z}^{M})\\ {z}^{1}{E}_{1}({z}^{M})\\ \vdots \\ {z}^{(M1)}{E}_{M1}({z}^{M})\end{array}\right]$$
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 H_{0}(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:
$$H(z)=\left[\begin{array}{c}\begin{array}{lllll}1\hfill & 1\hfill & 1\hfill & \mathrm{...}\hfill & 1\hfill \end{array}\\ \begin{array}{lllll}1\hfill & {e}^{j{w}_{1}}\hfill & {e}^{j2{w}_{1}}\hfill & \mathrm{...}\hfill & {e}^{j(M1){w}_{1}}\hfill \end{array}\\ \vdots \\ \begin{array}{lllll}1\hfill & {e}^{j{w}_{M1}}\hfill & {e}^{j2{w}_{M1}}\hfill & \mathrm{...}\hfill & {e}^{j(M1){w}_{M1}}\hfill \end{array}\end{array}\right]\left[\begin{array}{c}{E}_{0}(z)\\ {E}_{1}(z)\\ \vdots \\ {E}_{M1}(z)\end{array}\right]$$
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.
References
[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.
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using Simulink® Coder™.
Version History
Introduced in R2017a
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)