Red de conocimiento informático - Material del sitio web - Programa de filtro adaptativo MATLAB basado en algoritmo RLS y LMS

Programa de filtro adaptativo MATLAB basado en algoritmo RLS y LMS

¿Qué es el programa MATLAB para filtro adaptativo basado en algoritmo RLS y LMS?

Algoritmo % RLS

randn('seed', 0) ;

rand('seed', 0) ;

NoOfData = 8000; % Establece el número de puntos de datos utilizados para el entrenamiento

Orden = 32; % Peso de filtrado adaptativo

Lambda = 0,98 % Factor de olvido

Delta = 0,001; % matriz de correlación de inicialización R

x = randn(NoOfData, 1); % secuencia aleatoria gaussiana

h = rand(Order, 1 % muestreo aleatorio sistemático

d = filter(h, 1, x); % salida esperada

% Inicialización del algoritmo RLS

P = Delta * ojo (Orden, Orden %); Matriz de correlación

w = ceros (Orden, 1); % Inicialización del vector de coeficientes de filtro

% Adaptación RLS<

para n = Orden: NoOfData ; /p>

u = x(n:-1:n-Order+1) ;% función de retardo

pi_ = u' * P ;% función de correlación cruzada

k = Lambda + pi_ * u ;

K = pi_'/k ;% vector de ganancia

e(n) = d(n) - w' * u ;% Error función

w = w + K * e(n) ;% fórmula de recurrencia

PPrime = K * pi_ ;

P = ( P - PPrime ) / Lambda; % de error de matriz de correlación

w_err(n) = norm(h - w);% de error estimado verdadero

end;

% de resultados de la gráfica Figura

figura ;

plot(20*log10(abs(e)) ;% | curva de error para e |

título('Curva de aprendizaje') ;

xlabel('Número de iteraciones');

ylabel('Estimación del error de salida');

figura;

semilogía (w_err ) ;% Dibujar el gráfico de error de estimación real

title('Error de estimación de vector') ;

xlabel('Recuento de iteraciones') ;

ylabel( ' Vector de peso de error');

Algoritmo %lms

Borrar todo

Cerrar todo

Mantener % de peso del canal del sistema desactivado

p>

sysorder = 5;% número de grifos

N=1000;% número total de muestras

inp = randn(N,1);% Generar aleatorio gaussiano secuencia

n = randn(N,1);

);

subtrama(412)

trama(t,x) ;

subtrama(413)

trama(t,y);

subtrama(4

14)

plot(t,y_ normalizado);

figura(2)

plot(t,error,'r',t,error_normalized,' b'); Cómo escribir un algoritmo de filtrado adaptativo en MATLAB

Encontré este algoritmo en la biblioteca Baidu, algoritmo LMS de eliminación de ruido adaptativo. Simulación de Matlab, espero que te sea de ayuda. Si hay algún problema, podemos discutirlo y resolverlo.

Solicite el programa MATLAB para el sistema de ecualización adaptativo basado en el algoritmo RLS y LMS ```

Hay algunos problemas con el código, puede consultarlo, el código lo escribí yo :!

%Predicción lineal adaptativa basada en el algoritmo RLS

clc;

borrar todo;

N=300;

M=100;% tiempos de cálculo

w1=zeros(N,M);w2=zeros(N,M);I=ojo(2);e1=zeros(N,M) ;

para k=1: M

% genera ruido blanco

Pv=0.008;% define la variación del ruido blanco

a1= - 0.195;a2=0.95;o=0.02;r=0.95;

m=5000;% Genera 5000 números aleatorios

v=randn(1,m);

p>

v=v*sqrt(Pv);% genera ruido blanco con media 0 y varianza Pv

%m=1:N;

v=v (1 :N);% Elimina los primeros 1000

%plot(m,v);title('Ruido blanco con media 0 y varianza 0.0965');ylabel('v(n) ');xlabel ('n');

v=v';

%Vector Lema

x=zeros(1,N);

x(1)=v(1);%x(0)=v(0)

x(2)=v(2)-a1*v(1); =v(1)-a1*v(0)

w=zeros(2,N);

w(:1)=[0 0] ';%w( 0)=[0 0]';

X=ceros(2,N);

X(:,2)=[v(1) 0 ]';%X (0)=[0 0 ]';X(1)=[v(0) 0]'

C=ceros(2,2*N);

C( :,1:2)=1/o.*I;%C(0)=1/o*I

e=zeros(1,N)';% error de definición Vector

u=zeros(1,N);

g= zeros(2,N);

%Recursivo según algoritmo RLS

para n =1:N-2

x(n+2)=v(n+2)-a1*x(n+1)-a2*x(n);

X(:,n+2)=[x(n+1) x(n)]';

u(n)=X( :,n+1)'*C (:,2 *n-1:2*n)*X(:,n+1);

g(:,n)=(C(:,2*n-1:2* n)*X (:,n+1))./(r+u(n));

w(:,n+1)=w(:,n)+g(:, n)*( x(n+1)-X(:,n+1)'*w(:,n));

C(:,2*n+1:2*(n +1)) =1/r.*(C(:,2*n-1:2*n)-g(:,n)*X(:,n+1)'* C(:,2*n -1:2 *n));

e(n)=x(n+1)-X(:,n+1)'*w(:,n);

w1( :,k)=w(1,:)';w2(:,k)=w(2,:)';% almacena el valor del vector de peso calculado cada vez

e1 (:,k) =e(:,1); %Almacena el valor de error de cada cálculo

end

end

%

Calcular el vector de peso promedio y el error M veces

wa1=zeros(N,1);wa2=zeros(N,1);en=zeros(N,1);

para k=1:M

wa1( :,1)=wa1(:,1)+w1(:,k);

wa2(:,1)=wa2( :,1)+w2(:,k);

en(:,1)=en(:,1)+e1(:,k);

fin

n=1:N;

subtrama(221)

trama(n,w(1,n),n,w(2,n)); % Calcular la curva de cambio del vector de peso una vez

xlabel('n'); ylabel('w(n)');title('curva de cambio único de w1(n) y w2(n) (Predicción lineal, RLS)')

subplot( 222)

plot(n,wa1(n,1)./M,n,wa2(n,1)./ M);% Crea 100 curvas de cambio promedio de los vectores de peso calculados

xlabel('n');ylabel('w(n)');title('100 w1(n) y el cambio promedio curva de w2(n)')

subplot(223)

plot(n,e(n,1).^2);% Calcula e^2 solo una vez cambia la curva

xlabel('n');ylabel('e^2');title('Cálculo único de la curva de cambio para e^2');

subtrama (224)

plot(n,(en(n,1)/M).^2);% Crea una curva de cambio promedio de M cálculos de e^2

xlabel( 'n ');ylabel('e^2');title('La curva de cambio promedio de e^2 calculada 100 veces');