Contents

dsp.FrequencyDomainAdaptiveFilter System object

Package: dsp

Frequency Domain Adaptive filter

Description

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.

Construction

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.

Properties

Method

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

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.

BlockLength

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.

StepSize

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.

LeakageFactor

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.

AveragingFactor

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.

Offset

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.

InitialPower

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.

InitialCoefficients

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.

LockCoefficients

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.

Methods

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

Examples

QPSK adaptive equalization with FIR filter

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] = step(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;

References

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

Was this topic helpful?