This is machine translation

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

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

dsp.VariableBandwidthIIRFilter System object

Variable bandwidth IIR filter

Description

The dsp.VariableBandwidthIIRFilter object filters each channel of the input using IIR filter implementations. It does so while having the capability of tuning the bandwidth.

To filter each channel of the input:

  1. Create the dsp.VariableBandwidthIIRFilter 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

vbwIIR = dsp.VariableBandwidthIIRFilter
vbwIIR = dsp.VariableBandwidthIIRFilter(Name,Value)

Description

vbwIIR = dsp.VariableBandwidthIIRFilter returns a System object™, vbwIIR, which independently filters each channel of the input over successive calls to the algorithm. This System object uses a specified IIR filter implementation. The filter’s passband frequency may be tuned during the filtering operation. The variable bandwidth IIR filter is designed using the elliptical method. The filter is tuned using IIR spectral transformations based on allpass filters.

example

vbwIIR = dsp.VariableBandwidthIIRFilter(Name,Value) returns a variable bandwidth IIR filter System object, vbwIIR, with each property set to the specified value. You can specify additional name-value pair arguments in any order as (Name1,Value1,...,NameN,ValueN).

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

Specify the sampling rate of the input in Hertz as a finite numeric scalar. This property is non-tunable.

Data Types: double | single

Specify the type of the filter as one of 'Lowpass' | 'Highpass' | 'Bandpass' | 'Bandstop'. This property is non-tunable.

Specify the order of the IIR filter as a positive integer scalar. This property is non-tunable.

Data Types: double | single

Specify the filter passband frequency in Hz as a real, positive scalar, smaller than the SampleRate/2.

Tunable: Yes

Dependencies

This property applies when you set the FilterType property to 'Lowpass' or 'Highpass'.

Data Types: double | single

Specify the filter center frequency in Hz as a real, positive scalar, smaller than SampleRate/2.

Tunable: Yes

Dependencies

This property applies when you set the FilterType property to 'Bandpass' or 'Bandstop'.

Data Types: double | single

Specify the filter bandwidth in Hertz as a real, positive scalar, smaller than SampleRate/2.

Tunable: Yes

Dependencies

This property applies when you set the FilterType property to 'Bandpass' or 'Bandstop'.

Data Types: double | single

Specify the filter passband ripple as a real, positive scalar in decibels (dB). This property is non-tunable.

Data Types: double | single

Specify the filter stopband attenuation as a real, positive scalar in decibels (dB). This property is non-tunable.

Data Types: double | single

Usage

For versions earlier than R2016b, use the step function to run the System object algorithm. The arguments to step are the object you created, followed by the arguments shown in this section.

For example, y = step(obj,x) and y = obj(x) perform equivalent operations.

Syntax

y = vbwIIR(x)

Description

example

y = vbwIIR(x) filters the real or complex input signal x using a variable bandwidth IIR filter to produce the output y. The variable bandwidth IIR filter object operates on each channel, which means the object filters every column of the input signal independently over successive calls to the algorithm.

Input Arguments

expand all

Data input, specified as a vector or a matrix. This object also accepts variable-size inputs. Once the object is locked, you can change the size of each input channel, but you cannot change the number of channels.

Data Types: double | single
Complex Number Support: Yes

Output Arguments

expand all

Filtered output, returned as a vector or a matrix. The size, data type, and complexity of the output signal matches that of the input signal.

Data Types: double | single
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)

expand all

freqzFrequency response of filter
fvtoolVisualize frequency response of DSP filters
impzImpulse response of discrete-time filter System object
infoInformation about filter
coeffsFilter coefficients
costEstimate cost for implementing filter System objects
grpdelayGroup delay response of discrete-time filter System object
stepRun System object algorithm
releaseRelease resources and allow changes to System object property values and input characteristics
resetReset internal states of System object

Examples

expand all

Note: This example runs only in R2016b or later. If you are using an earlier release, replace each call to the function with the equivalent step syntax. For example, myObject(x) becomes step(myObject,x).

This examples shows you how to tune the center frequency and bandwidth of the IIR filter.

    Fs = 44100; % Input sample rate
    % Define a bandpass variable bandwidth IIR filter:
    vbwiir = dsp.VariableBandwidthIIRFilter('FilterType','Bandpass',...
                                          'FilterOrder',8,...
                                          'SampleRate',Fs,...
                                          'CenterFrequency',1e4,...
                                          'Bandwidth',4e3);
    tfe = dsp.TransferFunctionEstimator('FrequencyRange','onesided');
    aplot = dsp.ArrayPlot('PlotType','Line',...
                          'XOffset',0,...
                          'YLimits',[-120 5], ...
                          'SampleIncrement', 44100/1024,...
                          'YLabel','Frequency Response (dB)',...
                          'XLabel','Frequency (Hz)',...
                          'Title','System Transfer Function');
    FrameLength = 1024;
    sine = dsp.SineWave('SamplesPerFrame',FrameLength);
    for i = 1:500
       % Generate input
       x = sine() + randn(FrameLength,1);
       % Pass input through the filter
       y = vbwiir(x);
       % Transfer function estimation
       h = tfe(x,y);
       % plot transfer function
       aplot(20*log10(abs(h)))
       % Tune bandwidth and center frequency of the IIR filter
       if (i==250)
         vbwiir.CenterFrequency = 5000;
         vbwiir.Bandwidth = 2000;
       end
    end

Algorithms

This filter covers frequency transformations. A lowpass IIR prototype is designed, using the elliptical method by specifying its order, passband frequency, passband ripple and stopband attenuation. The passband ripple and stopband attenuation are equal to the values of the PassbandRipple and StopbandAttenuation properties. The prototype passband frequency is set to 0.5. If the FilterType property is 'Lowpass' or 'Highpass', the prototype’s order is equal to the value of FilterOrder. If the FilterType property is 'Bandpass' or 'Bandstop', the prototype filter order is equal to FilterOrder/2. The prototype is a Direct Form II Transposed cascade of second-order sections (Biquad filter). The prototype is transformed into the desired filter using the algorithms used in Digital Frequency Transformations. Each prototype SOS section is transformed separately. When FilterType is 'Lowpass' or 'Highpass', the resulting filter remains a Direct Form II Transposed cascade of second order sections. If the FilterType is 'Bandpass' or 'Bandstop', the resulting filter is a cascade of Direct Form II Transposed cascade of fourth order sections.

References

[1] A. G. Constantinides. “Spectral transformations for digital filters”, Proc. Inst. Elect. Eng. Vol. 117, No. 8, 1970, pp. 1585-1590.

Extended Capabilities

Introduced in R2014a