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:
Define and set up your adaptive FIR filter object. See Construction.
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.
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('
returns
an PropertyName
', PropertyValue
,...)FrequencyDomainAdaptiveFilter
System object, H
,
with each specified property set to the specified value.
H = dsp.FrequencyDomainAdaptiveFilter(LEN,'
returns
an PropertyName
',PropertyValue
,...)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 

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 

Adaptation step size Specify the adaptation step size factor as a positive numeric
scalar less than or equal to 

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 

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 

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 

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 

Timedomain initial coefficients of the filter Specify the initial timedomain coefficients of the adaptive
filter as a scalar or a vector of length equal to the 

Locked status of coefficient updates Specify whether to lock the filter coefficient values. By default,
the value of this property is This property is tunable. 
clone  Create Frequency Domain Adaptive filter object with same property values 
isLocked  Locked status for input attributes and nontunable properties 
release  Allow property value and input characteristics changes 
reset  Reset filter states for Frequency Domain Adaptive filter 
step  Apply Frequency Domain Adaptive filter to input 
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 InPhase 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('InPhase 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(ntr100: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(ntr100: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."FrequencyDomain and Multirate Adaptive Filtering." IEEE Signal Processing Magazine, Vol. 9, No. 1, pp. 14–37, Jan. 1992.
dsp.AdaptiveLatticeFilter
 dsp.AffineProjectionFilter
 dsp.FilteredXLMSFilter
 dsp.FIRFilter
 dsp.LMSFilter
 dsp.RLSFilter