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:
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.
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 . This property is nontunable.
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 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.
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.
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.
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 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.
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.
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.
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.
|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 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;
 Shynk, J.J."Frequency-Domain and Multirate Adaptive Filtering." IEEE Signal Processing Magazine, Vol. 9, No. 1, pp. 14–37, Jan. 1992.