| Purpose |
| Performs sample-per-sample filtering and coefficient update using the Transform Domain Fault Tolerant Adaptive Filter (TDFTAF) algorithm. TDFTAF contains redundant filter coefficients to improve the filter robustness against partial hardware failure during operation. |
| Syntax |
[W,y,e,p,w] = aspttdftaf(x,W,d,mu,p,b,T)
|
| Description |
Fault tolerant adaptive filters address the issue of robustness against hardware failure.
When a hardware failure occurs during the operation of a non fault tolerant adaptive
filter, the filter diverges and will never converge again, unless special measures are
taken to guarantee recovery. Fault tolerant adaptive filters makes sure that the filter
can recover as quickly as possible after the occurrence of a hardware failure. The
aspttdftaf() algorithm achieves hardware fault tolerance by introduces one
or more redundant filter coefficients that will allow the filter to quickly recover to
the optimal solution after the occurrence of a hardware failure in the underlying hardware
running the filter. The type of hardware failure usually encountered in practice is partial
memory failure. This type of hardware failure makes filter coefficients stored at the
faulty memory locations appear to remain at an arbitrary constant value.
Similar to the aspttdlms(), aspttdftaf() implements the Transform Domain LMS
adaptive algorithm used to update transversal adaptive filters. The algorithm performs
filtering and coefficient update in the transform domain, T. Normalization of the step
size by the input signal power is also performed in each band in the T-domain, which
usually improves the convergence behavior compared to the conventional LMS when T is an
orthogonal transformation. The only difference between TDFTAF and TDLMS is that the former
updates aspttdftaf() takes
an input samples delay line aspttdftaf() to update each T-domain coefficient is given by
aspttdftaf() for an FIR adaptive filter of |
Input Parameters [Size]::
x : input samples delay line [L+R x 1]
W : previous T-domain coef. vector W(n-1) [L+R x 1]
d : desired output d(n) [1 x 1]
mu : adaptation constant
p : last estimated power of x p(n-1) [L x 1]
b : AR pole for recursive calculation of p
T : The transform to be used {fft|dct|dst|...}
user defined transforms are also supported.
use transform T and its inverse iT.
Output parameters::
W : updated T-domain coef. vector
y : filter output y(n)
e : error signal; e(n) = d(n)-y(n)
p : new estimated power of x p(n)
w : updated t-domain coef. vector w(n), only
calculated if this output argument is given.
|
|
| Example |
% TDFTAF used in a simple system identification application. % During simulation two coefficients are fixed at arbitrary % values to simulate a hardware failiar. % iter = 5000; % Number of samples to process % Complex unknown impulse response h = [.9 + i*.4; 0.7+ i*.2; .5; .3+i*.1; .1]; xn = 2*(rand(iter,1)-0.5); % Input signal, zero mean random. % although xn is real, dn will be complex since h is complex dn = osfilter(h,xn); % Unknown filter output en = zeros(iter,1); % vector to collect the error % Initialize the TDFTAF with a filter of 5 coef. and 3 redundant [W,w,x,d,y,e,p]=init_tdftaf(5,3); % Initialize a TDLMS filter for comparizon [W1,w1,x,d,y1,e1,p1]=init_tdlms(5); |
%% Processing Loop for (m=1:iter) x = [xn(m,:); x(1:end-1,:)]; % update the input delay line d = dn(m,:) + 1e-3*rand; % additive noise of var = 1e-6 % call TDFTAF and TDLMS to calculate the filter output, % estimation error and update the coefficients. [W,y,e,p,w] = aspttdftaf(x,W ,d,0.05,p ,0.98,'fft'); [W1,y1,e1,p1,w1] = aspttdlms(x,W1,d,0.05,p1,0.98,'fft'); % save the last error sample to plot later en(m,:) = e; en1(m,:) = e1; if (m > 2000), W(3) = 0.0; W1(3) = 0.0; end % memory failiar if (m > 3000), W(4) = 1.0; W1(4) = 1.0; end % memory failiar end; % display the results eb = filter(0.1, [1 -0.9], en .* conj(en )); eb1 = filter(0.1, [1 -0.9], en1 .* conj(en1)); subplot(2,2,1);plot(10*log10(eb1 )); grid subplot(2,2,2); plot(10*log10(eb )); grid Running the above script will produce the graph shown in Fig. 4.19. The left side graph of the figure shows the learning curve of the TDLMS and the right side graph shows the learning curve of the TDFTAF. It is clear that the TDFTAF can recover after a failure while the TDLMS can not.
|
| Remarks |
|
| Algorithm |
aspttdftaf() performs the following operations
|
| Resources |
The resources required to implement the TDFTAF algorithm for a transversal adaptive FIR filter of
|
| See Also |
| INIT_ TDFTAF, ASPTTDLMS. |
| Reference |
| [7] for an introduction to fault tolerant adaptive filters. |