Package: dsp
Adaptive lattice filter
The dsp.AdaptiveLatticeFilter
computes output,
error, and coefficients using a Lattice based 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.AdaptiveLatticeFilter
.
The behavior of step
is specific to each object in
the toolbox.
H = dsp.AdaptiveLatticeFilter
returns
a Lattice based 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.AdaptiveLatticeFilter('
returns
an PropertyName
', PropertyValue
,...)AdaptiveLatticeFilter
System object, H
,
with each specified property set to the specified value.
H = dsp.AdaptiveLatticeFilter(LEN,'
returns
an PropertyName
',PropertyValue
,...)AdaptiveLatticeFilter
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 the 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. 

Leastsquares lattice forgetting factor Specify the Leastsquares lattice forgetting factor as a scalar
positive numeric value less than or equal to 1. Setting this value
to 1 denotes infinite memory during adaptation. This property applies
only if the Method property is set to 

Joint process step size of the gradient adaptive filter Specify the joint process step size of the gradient adaptive
lattice filter as a positive numeric scalar less than or equal to
1. This property applies only if the 

Offset for denominator of StepSize normalization term Specify an offset value for the denominator of the 

Reflection process step size Specify the reflection process step size of the gradient adaptive
lattice filter as a scalar numeric value between 0 and 1, both inclusive.
Use this property only if the 

Averaging factor of the energy estimator Specify the averaging factor as a positive numeric scalar less
than 1. Use this property to compute the exponentially windowed forward
and backward prediction error powers for the coefficient updates.
This property applies only if the 

Initial prediction error power Specify the initial values for the prediction error vectors as a scalar positive numeric value. If the 

Initial coefficients of the filter Specify the initial values of the FIR adaptive filter coefficients
as a scalar or a vector of length equal to the value of the 

Locked status of the coefficient updates Specify whether to lock the filter coefficient values. By default,
the value of this property is This property is applicable only if the 
clone  Create Adaptive Lattice filter object with same property values 
isLocked  Locked status for input attributes and nontunable properties 
msesim  Meansquare error for Adaptive Lattice filter 
release  Allow property value and input characteristics changes 
reset  Reset filter states for Adaptive Lattice filter 
step  Apply Adaptive Lattice filter to input 
QPSK adaptive equalization with FIR filter
Create the QPSK signal and the noise, filter them to obtain the received signal, and delay the received signal to obtain the desired signal:
D = 16; b = exp(1i*pi/4)*[0.7 1]; a = [1 0.7]; ntr = 1000; 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 Adaptive Lattice Filter to compute the filtered output and the filter error for the input and desired signal:
lam = 0.995; del = 1; h = dsp.AdaptiveLatticeFilter('Length', 32, ... 'ForgettingFactor', lam, 'InitialPredictionErrorPower', del); [y,e] = step(h,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])); title('InPhase Components'); legend('Desired','Output','Error'); xlabel('time index'); ylabel('signal value'); subplot(2,2,2); plot(1:ntr,imag([d;y;e])); title('Quadrature Components'); legend('Desired','Output','Error'); 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] Griffiths, Lloyd J. "A Continuously Adaptive Filter Implemented as a Lattice Structure". Proceedings of IEEE Int. Conf. on Acoustics, Speech, and Signal Processing, Hartford, CT, pp. 683–686, 1977 .
[2] Haykin, S. Adaptive Filter Theory, 4th Ed. Upper Saddle River, NJ: Prentice Hall, 1996.