FIR adaptive filter that uses unconstrained frequencydomain with quantized step size normalization
adaptfilt.ufdaf
will be removed in a future
release. Use dsp.FrequencyDomainAdaptiveFilter
instead.
ha = adaptfilt.ufdaf(l,step,leakage,delta,lambda,blocklen,
offset,coeffs,states)
ha = adaptfilt.ufdaf(l,step,leakage,delta,lambda,blocklen,
constructs an unconstrained
frequencydomain FIR adaptive filter
offset,coeffs,states)ha
with quantized
step size normalization.
For information on how to run data through your adaptive filter
object, see the Adaptive Filter Syntaxes section of the reference
page for filter
.
Entries in the following table describe the input arguments
for adaptfilt.ufdaf
.
Input Argument  Description 

 Adaptive filter length (the number of coefficients or
taps) and it must be a positive integer. 
 Adaptive filter step size. It must be a nonnegative scalar. 
 Leakage parameter of the adaptive filter. When you set
this argument to a value between zero and one, you are implementing
a leaky version of the UFDAF algorithm. 
 Initial common value of all of the FFT input signal powers. the initial value of delta should be positive, and it defaults to 1. 
 Specifies the averaging factor used to compute the exponentiallywindowed
FFT input signal powers for the coefficient updates. 
 Block length for the coefficient updates. This must be
a positive integer. For faster execution, ( 
 Offset for the normalization terms in the coefficient updates. This can help you avoid divide by zero conditions, or divide by very small numbers conditions, when any of the FFT input signal powers become very small. Default value is zero. 
 Initial timedomain coefficients of the adaptive filter.
It should be a length 
 Adaptive filter states. 
Since your adaptfilt.ufdaf
filter is an object,
it has properties that define its behavior in operation. Note that
many of the properties are also input arguments for creating adaptfilt.ufdaf
objects.
To show you the properties that apply, this table lists and describes
each property for the filter object.
Name  Range  Description 

 None  Defines the adaptive filter algorithm the object uses during adaptation 
 Specifies the averaging factor used to compute the exponentiallywindowed
FFT input signal powers for the coefficient updates.  
 Block length for the coefficient updates. This must be
a positive integer. For faster execution, (  
 Stores the discrete Fourier transform of the filter coefficients
in  
 States for the FFT operation.  
 Any positive integer  Reports the length of the filter, the number of coefficients or taps 
 0 to 1  Leakage parameter of the adaptive filter. When you set
this argument to a value between zero and one, you are implementing
a leaky version of the UFDAF algorithm. 
 Offset for the normalization terms in the coefficient updates. This can help you avoid divide by zero conditions, or divide by very small numbers conditions, when any of the FFT input signal powers become very small. Default value is zero.  

 Determine whether the filter states get restored to their
starting values for each filtering operation. The starting values
are the values in place when you create the filter. 
 2*  A vector of 2* 
 0 to 1  Adaptive filter step size. It must be a nonnegative scalar.
You can use 
Show an example of Quadrature Phase Shift Keying (QPSK) adaptive equalization using a 32coefficient adaptive filter. For fidelity, use 1024 iterations. The figure that follows the code provides the information you need to assess the performance of the equalization process.
D = 16; % Number of samples of delay b = exp(1j*pi/4)*[0.7 1]; % Numerator coefficients of channel a = [1 0.7]; % Denominator coefficients of channel ntr= 1024; % Number of iterations s = sign(randn(1,ntr+D))+1j*sign(randn(1,ntr+D));% Baseband QPSK signal n = 0.1*(randn(1,ntr+D) + 1j*randn(1,ntr+D)); r = filter(b,a,s)+n;% Received signal x = r(1+D:ntr+D); % Input signal (received signal) d = s(1:ntr); % Desired signal (delayed QPSK signal) del = 1; %Initial FFT input powers mu = 0.1; % Step size lam = 0.9; % Averaging factor ha = adaptfilt.ufdaf(32,mu,1,del,lam); [y,e] = filter(ha,x,d); subplot(2,2,1); plot(1:1000,real([d(1:1000);y(1:1000);e(1:1000)])); 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'); 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;
Shynk, J.J.,"Frequencydomain and Multirate Adaptive Filtering," IEEE^{®} Signal Processing Magazine, vol. 9, no. 1, pp. 1437, Jan. 1992
adaptfilt.blms
 adaptfilt.blmsfft
 adaptfilt.fdaf
 adaptfilt.pbufdaf