| Filter Design Toolbox | ![]() |
Create a transform-domain (TDAFDFT) adaptive filter object that uses the discrete Fourier transform
Syntax
Description
ha = adaptfilt.tdafdft(l,step,leakage,offset,delta,lambda,... constructs a transform-domain adaptive filter object
coeffs,states)
ha using a discrete Fourier transform.
Input Arguments
Entries in the following table describe the input arguments for adaptfilt.tdafdft.
| Input Argument |
Description |
l |
Adaptive filter length (the number of coefficients or taps) and it must be a positive integer. l defaults to 10. |
step |
Adaptive filter step size. It must be a nonnegative scalar. You can use maxstep to determine a reasonable range of step size values for the signals being processed. step defaults to 0. |
leakage |
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 TDAFDFT algorithm. leakage defaults to 1--no leakage. |
offset |
Offset for the normalization terms in the coefficient updates. YOu can use this argument to avoid dividing by zeros or by very small numbers when any of the FFT input signal powers become very small. offset defaults to zero. |
delta |
Initial common value of all of the transform domain powers. Its initial value should be positive. delta defaults to 5. |
lambda |
Averaging factor used to compute the exponentially-windowed estimates of the powers in the transformed signal bins for the coefficient updates. lambda should lie between zero and one. For default filter objects, LAMBDA equals (1 - step). |
coeffs |
Initial time domain coefficients of the adaptive filter. Set it to be a length l vector. coeffs defaults to a zero vector of length l. |
states |
Initial conditions of the adaptive filter. states defaults to a zero vector with length equal to (l - 1). |
adaptfilt.tdafdft Object Properties
Since your adaptfilt.tdafdft 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.tdafdft objects. To show you the properties that apply, this table lists and describes each property for the transform domain filter object.
| Name |
Range |
Description |
Algorithm |
None |
Defines the adaptive filter algorithm the object uses during adaptation |
FilterLength |
Any positive integer |
Reports the length of the filter, the number of coefficients or taps |
Coefficients |
Vector of elements |
Vector containing the initial filter coefficients. It must be a length l vector where l is the number of filter coefficients. coeffs defaults to length l vector of zeros when you do not provide the argument for input. |
States |
Vector of elements, data type double |
Vector of the adaptive filter states. states defaults to a vector of zeros which has length equal to (l + projectord - 2). |
| StepSize |
Step size. It must be a nonnegative scalar, greater than zero and less than or equal to 1. You can use maxstep to determine a reasonable range of step size values for the signals being processed. step defaults to 0. |
|
| Leakage |
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 TDAFDFT algorithm. leakage defaults to 1--no leakage. |
|
| Offset |
Offset for the normalization terms in the coefficient updates. You can use this argument to avoid dividing by zeros or by very small numbers when any of the FFT input signal powers become very small. offset defaults to zero. |
|
| Power |
2*l element vector |
A vector of 2*l elements, each initialized with the value delta from the unput arguments. As you filter data, Power gets updated by the filter process. |
| AvgFactor |
Averaging factor used to compute the exponentially-windowed estimates of the powers in the transformed signal bins for the coefficient updates. AvgFactor should lie between zero and one. For default filter objects, AvgFactor equals (1 - step). lambda is the input argument that represent AvgFactor. |
|
| ResetBeforeFiltering |
off or on |
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. ResetBeforeFiltering returns to zero any state that the filter changes during processing. States that the filter does not change are not affected. Defaults to 'on'. |
| NumSamplesProcessed |
Any integer |
Returns the number of samples processed during filtering. As a check, the number of samples reported processed plus the number of nonprocessed samples should be the total number of input samples. Defaults to zero. |
Examples
Quadrature Phase Shift Keying (QPSK) adaptive equalization using a 32-coefficient FIR filter (1000 iterations).
D = 16; % Number of samples of delay b = exp(j*pi/4)*[-0.7 1]; % Numerator coefficients of channel a = [1 -0.7]; % Denominator coefficients of channel ntr= 1000; % Number of iterations s = sign(randn(1,ntr+D)) + j*sign(randn(1,ntr+D));% Baseband % QPSK signal n = 0.1*(randn(1,ntr+D) + j*randn(1,ntr+D)); % Noise signal 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) L = 32; % filter length mu = 0.01; % Step size ha = adaptfilt.tdafdft(L,mu); [y,e] = filter(ha,x,d); subplot(2,2,1); plot(1:ntr,real([d;y;e])); title('In-Phase 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(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;
See Also
adaptfilt.tdafdct, adaptfilt.fdaf, adaptfilt.blms
References
S. Haykin, Adaptive Filter Theory, 3rd Edition, Prentice Hall, N.J., 1996
| adaptfilt.swrls | adaptfilt.tdafdct | ![]() |
Learn more about the latest releases of MathWorks products: |
| © 1994-2008 The MathWorks, Inc. - Site Help - Patents - Trademarks - Privacy Policy - Preventing Piracy - RSS |