Documentation

This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

dsp.Channelizer System object

Polyphase FFT analysis filter bank

Description

The dsp.Channelizer System object™ separates a broadband input signal into multiple narrow subbands using a fast Fourier transform (FFT)-based analysis 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.

To separate a broadband signal into multiple narrow subbands:

  1. Create the dsp.Channelizer object and set its properties.

  2. Call the object with arguments, as if it were a function.

To learn more about how System objects work, see What Are System Objects? (MATLAB).

Creation

Syntax

channelizer = dsp.Channelizer
channelizer = dsp.Channelizer(M)
channelizer = dsp.Channelizer(Name,Value)

Description

example

channelizer = dsp.Channelizer creates a polyphase FFT analysis filter bank System object that separates a broadband input signal into multiple narrowband output signals. This object implements the inverse operation of the dsp.ChannelSynthesizer System object.

example

channelizer = dsp.Channelizer(M) creates an M-band polyphase FFT analysis filter bank, with the NumFrequencyBands property set to M.

Example: channelizer = dsp.Channelize(16);

example

channelizer = dsp.Channelizer(Name,Value) creates a polyphase FFT analysis filter bank with each specified property set to the specified value. Enclose each property name in single quotes.

Example: channelizer = dsp.Channelizer('NumTapsPerBand',20,'StopbandAttenuation',140);

Properties

expand all

Unless otherwise indicated, properties are nontunable, which means you cannot change their values after calling the object. Objects lock when you call them, and the release function unlocks them.

If a property is tunable, you can change its value at any time.

For more information on changing property values, see System Design in MATLAB Using System Objects (MATLAB).

Number of frequency bands into which the object separates the input broadband signal, specified as a positive integer greater than 1. This property corresponds to the number of polyphase branches and the FFT length used in the filter bank.

Example: 16

Example: 64

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Filter design parameters or filter coefficients, specified as one of these options:

  • 'Number of taps per band and stopband attenuation' — Specify the filter design parameters through the NumTapsPerBand and Stopband attenuation (dB) properties.

  • 'Coefficients' — Specify the filter coefficients directly using the LowpassCoefficients property.

Number of filter coefficients each polyphase branch uses, specified as a positive integer. 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 NumFrequencyBands × NumTapsPerBand. 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.

Example: 8

Example: 16

Dependencies

This property applies when you set Specification to 'Number of taps per band and stopband attenuation'.

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Stopband attenuation of the lowpass filter, specified as a positive real scalar in dB. This value controls the maximum amount of aliasing from one frequency band to the next. When the stopband attenuation increases, the passband ripple decreases. 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.

Example: 80

Dependencies

This property applies when you set Specification to 'Number of taps per band and stopband attenuation'.

Data Types: single | double

Coefficients of the prototype lowpass filter, specified as a row vector. 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 object zero-pads the coefficients.

Tunable: Yes

Dependencies

This property applies when you set Specification to 'Coefficients'.

Data Types: single | double

Usage

Syntax

channOut = channelizer(input)

Description

example

channOut = channelizer(input) separates the broadband input signal into a number of narrow band signals contained in the columns of the channelizer output.

Input Arguments

expand all

Data input, specified as a vector or a matrix. The number of rows in the input signal must be a multiple of the number of frequency bands of the filter bank. Each column of the input corresponds to a separate channel. If M is the number of frequency bands, and the input is an L-by-1 matrix, then the output signal has dimensions L/M-by-M. Each narrowband signal forms a column in the output. If the input has more than one channel, that is, it has dimensions L-by-N with N > 1, then the output has dimensions L/M-by-M-by-N.

This object supports variable-size input signals. You can change the input frame size (number of rows) even after calling the algorithm. However, the number of channels (number of columns) must remain constant.

Example: randn(64,4)

Data Types: single | double
Complex Number Support: Yes

Output Arguments

expand all

Channelizer output, returned as a matrix or a 3-D array. If the input is an L-by-1 matrix, then the output signal has dimensions L/M-by-M, where M is the number of frequency bands. Each narrowband signal forms a column in the output. If the input has more than one channel, that is, it has dimensions L-by-N with N > 1, then the output has dimensions L/M-by-M-by-N.

Data Types: single | double
Complex Number Support: Yes

Object Functions

To use an object function, specify the System object as the first input argument. For example, to release system resources of a System object named obj, use this syntax:

release(obj)
coeffsCoefficients of prototype lowpass filter
tfReturn transfer function of overall prototype lowpass filter
polyphaseReturn polyphase matrix
freqzFrequency response of filters in channelizer
fvtoolVisualize the filters in the channelizer
bandedgeFrequenciesCompute the bandedge frequencies
centerFrequenciesCompute center frequencies
getFiltersReturn matrix of channelizer FIR filters
stepRun System object algorithm
cloneCreate duplicate System object
getNumInputsNumber of inputs required to call the System object
getNumOutputsNumber of outputs from calling the System object
isLockedDetermine if System object is locked
releaseRelease resources and allow changes to System object property values and input characteristics
resetReset internal states of System object

Examples

expand all

The quadrature mirror filter bank (QMF) contains an analysis filter bank section and a synthesis filter bank section. dsp.Channelizer implements the analysis filter bank. dsp.ChannelSynthesizer implements the synthesis filter bank using the efficient polyphase implementation based on a prototype lowpass filter.

Initialization

Initialize the dsp.Channelizer and dsp.ChannelSynthesizer System objects. Each object is set up with 8 frequency bands, 8 polyphase branches in each filter, 12 coefficients per polyphase branch, and a stopband attenuation of 140 dB. Use a sine wave with multiple frequencies as the input signal. View the input spectrum and the output spectrum using a spectrum analyzer.

offsets = [-40,-30,-20,10,15,25,35,-15];
sinewave = dsp.SineWave('ComplexOutput',true,'Frequency',...
    offsets+(-375:125:500),'SamplesPerFrame',800);

channelizer = dsp.Channelizer('StopbandAttenuation',140);
synthesizer = dsp.ChannelSynthesizer('StopbandAttenuation',140);
spectrumAnalyzer =  dsp.SpectrumAnalyzer('ShowLegend',true,'NumInputPorts',...
    2,'ChannelNames',{'Input','Output'},'Title','Input and Output of QMF');

Streaming

Use the channelizer to split the broadband input signal into multiple narrow bands. Then pass the multiple narrowband signals into the synthesizer, which merges these signals to form the broadband signal. Compare the spectra of the input and output signals. The input and output spectra match very closely.

for i = 1:5000
    x = sum(sinewave(),2);
    y = channelizer(x);
    v = synthesizer(y);
    spectrumAnalyzer(x,v)
end

Definitions

expand all

Algorithms

expand all

Extended Capabilities

Introduced in R2016b

Was this topic helpful?