% LFPEF used in a adaptive line enhancer application.
% By the end of this script, the forward prediction error
% is the wide-band signal and the output of the equivalent
% transversal predictor is the narrow-band signal.
iter = 5000;
t = (1:iter)/1000; % time index @ 1kHz
xn = 2*(rand(iter,1)-0.5) ; % Input signal, zero mean random
xn = xn + 1 * cos(2*pi*50*t');% add 50 Hz narrow-band to input
yn = zeros(iter,1); % narrow-band signal
en = yn; % error signal
% Initialize LFPEF
M = 10; % filter length
mu_p = 0.01; % Step size
[k,b,P,e,y,c]=init_lfpef(M); % Init LFPEF
%% Processing Loop
for (m=1:iter)
[k,b,P,e,y,c] = asptlfpef(k,b,P,xn(m),mu_p);
yn(m,:) = y; % save narrow-band
en(m,:) = e; % save wide-band
end;
h = filter([1 ; -c],1,[1;zeros(1023,1)]);
f = (0:512)*500/512;
H = 20*log10(abs(fft(h)));
% display the results
subplot(2,2,1);plot(f,H(1:513,:)); grid;
subplot(2,2,2);
plot([yn(4800:5000)]);grid
Running the above script will produce the graph shown in Fig. 5.5. The left side graph of the figure shows the frequency response of the equivalent transversal prediction error filter after convergence. This frequency response shows that the predictor adjusts itself to pass the narrow-band signal at 50 Hz and attenuate all other input components so that the error signal contains the wide-band signal only. The right side graph shows the last 200 samples of the filter output which shows that the filter output coincide with the narrow-band 50 Hz superimposed on the white noise input signal.
|