Sign in

username:

password:



Not a member?

Search matlab



Search tips

Subscribe to matlab



matlab by Keywords

Atanh | Autocorrelation | Bandpass Filter | C++ | Conv | Database | Deconv | Excel | FFT | Filter | Filtering | FIR | Fourier Transfrom | FSK | Gaussian Noise | Haykin | IFFT | Image | Java | LFSR | LMS | LPC | MEX | OFDM | QPSK | Radix | Random | Sampling | Segmentation | Simulink | Visual Basic | Waveform | Wavelet

Sponsor

NEW! TMS320C6474: 3x the performance. 1/3 the cost. Three 1 GHz cores on 1 chip.

Discussion Groups

Discussion Groups | Matlab DSP | lms notch adaptive filter

Technical discussion about Matlab and issues related to Digital Signal Processing.

  

Post a new Thread

lms notch adaptive filter - el01...@mail.ntua.gr - Feb 26 15:53:44 2008




hello,
>
>im new to the topic of adaptive filters and its implementation in matlab. im doing a
project on 'filtering an ECG foetus'. we are carrying out all our analysis on an ECG wave with
only a powerline interference (60hz).
>
>the signal available to us is an ECG wave with a noise component of 60hz, sampled at
360hz..
>can you help me implement an adaptive filter using LMS algorithm for this signal in
matlab... i am not clear with regards to the value of mu(step size), filter order, necessary
inputs to be given to filter etc... can someone please send me a SAMPLE CODE. 
>
>thanks
>
>**********************************************************
Hello,
this is a simulation of the application, in which you are interested. Instead of an ECG signal
i use a simpler one, containing one component at 200Hz, one at 280Hz, one at 60Hz plus white
noise. In the sequel i design an lms adaptive filter which removes the 60Hz component from the
initial signal. The filtered signal is the "error signal e" of the adaptive filter.
Please, study, run and experiment with the code:

clear all

Fs = 1000;
N = 1000;
i = [0 : N-1]';

%create the initial signal
x = sin(2*pi*200*i/Fs) + 0.66*sin(2*pi*280*i/Fs) + 0.59*sin(2*pi*60*i/Fs) +
0.5^0.5*randn(N,1);

%create the reference signal of the adaptive filter
u = sin(2*pi*60*i/Fs);

%adaptive filter architecture
L = 20;
step_size = 0.005;
w = zeros(1,L);

%run the adaptive filter
e(L) = x(L);
for k = L : N
    regressor = flipud(u(k-L+1:k));    
    w = w + step_size * regressor' * e(k);
    e(k+1) = x(k) - w * regressor;
end

%compute the spectrum of the initial signal and the filtered signal
f = [0 : Fs/N : Fs - Fs/N]';
F = abs(fft(x));
E = abs(fft(e));

%plot
figure;
subplot(411);plot(x);title('initial signal');
subplot(412);plot(e);title('initial signal after filtering');
subplot(413);plot(f,F(1:length(f)));title('spectrum of initial signal');
subplot(414);plot(f,E(1:length(f)));title('spectrum of initial signal after filtering');



(You need to be a member of matlab -- send a blank email to matlab-subscribe@yahoogroups.com )