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.FrequencyDomainAdaptiveFilter System object

Package: dsp

Frequency Domain Adaptive filter


The dsp.FrequencyDomainAdaptiveFilter computes output, error, and coefficients using a frequency domain FIR adaptive filter.

To implement the adaptive FIR filter object:

  1. Define and set up your adaptive FIR filter object. See Construction.

  2. Call step to implement the filter according to the properties of dsp.FrequencyDomainAdaptiveFilter. The behavior of step is specific to each object in the toolbox.

    Note:   Starting in R2016b, instead of using the step method to perform the operation defined by the System object™, you can call the object with arguments, as if it were a function. For example, y = step(obj,x) and y = obj(x) perform equivalent operations.


H = dsp.FrequencyDomainAdaptiveFilter returns a frequency domain FIR adaptive filter System object, H. This System object is used to compute the filtered output and the filter error for a given input and desired signal.

H = dsp.FrequencyDomainAdaptiveFilter('PropertyName', PropertyValue,...) returns an FrequencyDomainAdaptiveFilter System object, H, with each specified property set to the specified value.

H = dsp.FrequencyDomainAdaptiveFilter(LEN,'PropertyName',PropertyValue,...) returns an FrequencyDomainAdaptiveFilter System object, H, with the Length property set to LEN and other specified properties set to the specified values.



Method to calculate filter coefficients

Specify the method used to calculate filter coefficients as one of 'Constrained FDAF' |'Unconstrained FDAF'. The default is 'Constrained FDAF'. For algorithms on how to implement this filter and its three methods, refer to [1]. This property is nontunable.


Length of filter coefficients vector

Specify the length of the FIR filter coefficients vector as a positive integer value. This property is nontunable.

The default value is 32.


Block length for coefficient updates

Specify the block length of the coefficients updates as a positive integer value. The length of the input vectors must be divisible by the BlockLength property value. For faster execution, the sum of the length property value and the BlockLength property value should be a power of two. The default value is the value of Length. This property is nontunable.


Adaptation step size

Specify the adaptation step size factor as a positive numeric scalar less than or equal to 1. Setting the StepSize property equal to 1 provides the fastest convergence during adaptation. The default is 1. This property is tunable.


Adaptation leakage factor

Specify the leakage factor used in leaky adaptive filter as a scalar numeric value between 0 and 1, both inclusive. When the value is less than 1, the System object implements a leaky adaptive algorithm. The default is 1, providing no leakage in the adapting method. This property is tunable.


Averaging factor of energy estimator

Specify the averaging factor used to compute the exponentially windowed FFT input signal powers for the coefficient updates as a scalar positive numeric value less than or equal to 1. The default value is 1. This property is tunable.


Offset for normalization terms

Specify the offset for the normalization terms in the coefficient updates as a scalar nonnegative numeric value. Use this property to avoid divide by zero or divide by very small numbers. This situation occurs if any of the FFT input signal powers becomes very small. The default value is 0. This property is tunable.


Initial FFT input signal power

Specify the initial common value of all of the FFT input signal powers as a scalar positive numeric value. The default is 1. This property is tunable.


Time-domain initial coefficients of the filter

Specify the initial time-domain coefficients of the adaptive filter as a scalar or a vector of length equal to the Length property value. The adaptive filter object uses these coefficients to compute the initial frequency-domain filter coefficients. The default is 0. This property is tunable.


Locked status of coefficient updates

Specify whether to lock the filter coefficient values. By default, the value of this property is false, and the object continuously updates the filter coefficients. If this property is set to true, the filter coefficients do not update and their values remain the same.

This property is tunable.


cloneCreate Frequency Domain Adaptive filter object with same property values
isLockedLocked status for input attributes and nontunable properties
releaseAllow property value and input characteristics changes
resetReset filter states for Frequency Domain Adaptive filter
stepApply Frequency Domain Adaptive filter to input


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

Generate QPSK and noise signals, filter to obtain the received signal, and delay the QPSK signal to obtain the desired signal.

D = 16;
b  = exp(1i*pi/4)*[-0.7 1];
a  = [1 -0.7];
ntr= 1024;
s  = sign(randn(1,ntr+D))+1i*sign(randn(1,ntr+D));
n  = 0.1*(randn(1,ntr+D) + 1i*randn(1,ntr+D));
r  = filter(b,a,s) + n;
x  = r(1+D:ntr+D);
d  = s(1:ntr);

Use the Frequency Domain Adaptive Filter to compute the filtered output and the filter error for the input and desired signal.

mu  = 0.1;
ha = dsp.FrequencyDomainAdaptiveFilter('Length',32,'StepSize',mu);
[y,e] = ha(x,d);

Plot the In-Phase and the Quadrature components of the desired, output, and the error signals.

subplot(2,2,1); plot(1:ntr,real([d;y;e]));
legend('Desired','Output','Error'); title('In-Phase Components');
xlabel('Time Index'); ylabel('signal value');
subplot(2,2,2); plot(1:ntr,imag([d;y;e]));
legend('Desired','Output','Error'); title('Quadrature Components');
xlabel('Time Index'); ylabel('signal value');

Plot the received and equalized signals' scatter plots.

subplot(2,2,3); plot(x(ntr-100:ntr),'.'); axis([-3 3 -3 3]);
title('Received Signal Scatter Plot'); axis('square');
xlabel('Real[x]'); ylabel('Imag[x]'); grid on;
subplot(2,2,4); plot(y(ntr-100:ntr),'.'); axis([-3 3 -3 3]);
title('Equalized Signal Scatter Plot'); axis('square');
xlabel('Real[y]'); ylabel('Imag[y]'); grid on;


[1] Shynk, J.J."Frequency-Domain and Multirate Adaptive Filtering." IEEE Signal Processing Magazine, Vol. 9, No. 1, pp. 14–37, Jan. 1992.

Introduced in R2013b

Was this topic helpful?