NMLS 自适应滤波器matlab实现

%Normalized Least Mean Square Adaptive Filter
%for Echo Cancellation
function [e,h,t] = adapt_filt_nlms(x,B,h,delta,l,l1)
%x = the signal from the speaker 
%B = signal through echo path
%h = impulse response of adaptive filter
%l = length of the signal x
%l1 = length of the adaptive filter
%delta  = step size
%e = error
%h = adaptive filter impulse response
tic;
for k = 1:150
    for n= 1:l
        xcap = x((n+l1-1):-1:(n+l1-1)-l1+1);
        yout(n) = h*xcap';
        e(n) = B(n) - yout(n);
        xnorm = 0.000001+(xcap*xcap');
        h = h+((delta*e(n))*(xcap/xnorm));
    end
    eold = 0.0;
    for i = 1:l
        mesquare = eold+(e(i)^2);
        eold = mesquare;
    end
    if mesquare <=0.0001
        break;
    end
end
t = toc; %to get the time elapsed

 

你可能感兴趣的:(matlab,音频,matlab,自适应滤波)