Explora Libros electrónicos
Categorías
Explora Audiolibros
Categorías
Explora Revistas
Categorías
Explora Documentos
Categorías
UNIVERSIDAD DE ALCAL
z-1
W0
W1
d[k]
+ +
y[k]
- +
e[k]
Donde: 2 k x [ k ] = sen N n [ k ] es un ruido aditivo, blanco y gaussiano de media nula y varianza igual a 0,05. 2 k d [ k ] = 2 cos N
Matriz de autocorrelacin de la seal de entrada, Rxx: 2 n 2 [ k ] 0.5 cos 0.5 + E N = 2 n 2 [ k ] 0.5 cos 0.5 + E N
R XX
R Xd
El objetivo es encontrar el vector de pesos ptimo que minimice el error cuadrtico medio entre la salida del filtro y la salida deseada.
1.- Para N = 30, realice una representacin grfica de la superficie de error asociada al
problema planteado. La expresin de la superficie de error es la siguiente:
T T T 2 2 = E k = E d + Wk R XX Wk 2R Xd Wk
2 N
2 + 2 w1k sen N
+2
% Representacin de la superficie de error: w0k = -40: 0.5: 60; w1k = -40: 0.5:20; [W0k,W1k] = meshgrid(w0k,w1k);
sup_error = 0.55*((W0k.^2)+(W1k.^2))+ ((W0k.*W1k)*cos(2*pi/N)) + 2*W1k*sin(2*pi/N)+ 2;
Puede obtener una representacin en curvas de nivel mediante la funcin contour() de Matlab: figure(2); contour(w0k,w1k,sup_error)
2.- Calcule el vector de pesos ptimo y el error cuadrtico medio mnimo para el problema planteado. Recuerde que:
1 W* = R XX R Xd
( (
) )
% Clculo del vector de pesos ptimo. W0_min = (2*cos(2*pi/N)*sin(2*pi/N))/(((1+2*0.05).^2)-(cos(2*pi/N)^2)); W1_min = (-2*(1+2*0.05)*sin(2*pi/N))/(((1+2*0.05).^2)-(cos(2*pi/N)^2)); % Clculo del mnimo de la superficie de error: Rxd_real = [0; -sin(2*pi/N)]; potencia_deseada = 2; % Potencia de la seal deseada: error_minimo = potencia_deseada - (Rxd_real)'*[W0_min; W1_min];
3.- Represente el vector de pesos ptimo en la grfica que obtuvo con la funcin contour().
Algoritmo LMS
En clases de teora se ha estudiado el mtodo de mxima pendiente cuya regla de actualizacin de los coeficientes del filtro es la siguiente:
Wk +1 = Wk ( Wk ) = Wk ( 2R XX Wk 2R Xd )
En el estudio del mtodo se asumi que se dispona de una medida exacta del vector gradiente en cada iteracin. En la mayora de las aplicaciones no se dispone de una medida exacta y debe utilizarse una estimacin basada en una serie de observaciones. Esta estimacin es ruidosa y puede considerarse como el gradiente real contaminado por un ruido aditivo. El algoritmo LMS emplea una estimacin especial del gradiente que resulta vlida para el filtro FIR adaptativo y se puede extender a filtros IIR adaptativos. Como se ver a continuacin, es un algoritmo muy importante debido a su simplicidad y facilidad de clculo. En cada iteracin, el error se calcula como:
T k = d k XT k Wk = d k Wk X k
Por tanto, para obtener una estimacin del gradiente es necesario estimar el error cuadrtico medio. Este algoritmo utiliza un mtodo instantneo, de modo que la estimacin del error cuadrtico medio en cada iteracin es exactamente el cuadrado del valor del error medido: =E 2 = 2 k k k El gradiente estimado tendr la forma:
( W ) = k ( Wk ) , k ( Wk ) ,..., k ( Wk ) k k w w w 0 1 L
T T
2 ( Wk ) k2 ( Wk ) k ( Wk ) k ( Wk ) 2 ( Wk ) ( Wk ) = k , ,..., k , ,..., k = 2 k wL w w w w w 0 1 0 1 L
( W ) = 2 X i = 0,1,..., L k k k k
Y el algoritmo LMS queda: Wk +1 = Wk + 2 k X k 1.- Escriba una funcin lms.m que desarrolle el algoritmo LMS. Debe recibir los siguientes argumentos de entrada:
la seal aplicada a la entrada del filtro, la seal deseada, el orden del filtro cuyos coeficientes se van a ajustar, el nmero de iteraciones, la constante de ajuste el vector de pesos inicial.
A su salida devolver:
la salida en cada iteracin durante el proceso de ajuste, la curva de aprendizaje los vectores de pesos obtenidos durante el proceso.
Nota: Vea el anexo que se adjunta al final del documento.
2.- Calcule una cota de la constante de ajuste para asegurar la convergencia del algoritmo.
% Clculo de la cota de la constante de ajuste: % Potencia de la seal: potencia = mean(entrada.^2); orden=1; Cota = 1/((orden + 1)*potencia);
3.- Ejecute el algoritmo utilizando las seales que descritas en la primera parte de la prctica. Utilice tres constantes de ajuste: Cota , Cota/10 y Cota/40. Elija como vector de pesos inicial el [-5,5].
% Generacin de las seales. k = 0:199; N = 30;x = sin((2*pi*k)/N); % Se generan 200 muestras de seal. n = sqrt(0.05)*randn(1,200); entrada = x + n; deseada = 2*cos((2*pi*k)/N); [yk,error,Wk]=Lms(entrada,deseada,orden,200,constante_ajuste,[-5,5]);
4.- Represente en una misma grfica las curvas de nivel de la superficie de error y la evolucin del vector de pesos durante el proceso adaptativo.
% Volvemos a elegir los ejes para realizar una representacin en curvas de nivel. clear w0, clear w1, clear W0, clear W1, clear sup_error; w0 = -5:0.1:8;w1 = -10:0.1:5; [W0,W1] = meshgrid(w0,w1);
sup_error = 0.55*((W0.^2)+(W1.^2))+ ((W0.*W1)*cos(2*pi/N)) + 2*W1*sin(2*pi/N)+ 2;
figure(2); contour(w0,w1,sup_error) hold on; plot(Wk(:,1),Wk(:,2),'c'); plot(W0_min,W1_min,'k*'); title('Evolucin del vector de pesos durante el proceso adaptativo') hold off
5.- Represente en dos grficas diferentes la evolucin de cada uno de los pesos durante el proceso y comprela con el valor ptimo para cada uno de ellos.
numero=200; % Nmero de iteraciones del proceso adaptativo figure(3); subplot(2,1,1);plot(Wk(:,1));hold on;plot(W0_min*ones(1,numero)); hold on; title('Evolucin del primer coeficiente durante el proceso adaptativo'); subplot(2,1,2); plot(Wk(:,2));hold on;plot(W1_min*ones(1,numero)); hold off title('Evolucin del segundo coeficiente durante el proceso adaptativo');
7.- Comente los resultados obtenidos. 8.- Repita los ejercicios 3, 4, 5 y 6 utilizando segmentos de seales de 600 muestras (600 iteraciones en el algoritmo adaptativo, numero=600) y los valores de la cota que considere ms apropiados. Compare los resultados con los obtenidos al emplear 200 muestras. Nota: Se recomienda que escriba un procedimiento que, pidiendo como parmetros el nmero de muestras (nmero de iteraciones), la potencia de ruido y la constante de ajuste, realice todos los pasos descritos en los ejercicios 3, 4, 5 y 6. 9.- Vuelva a repetir los ejercicios 3-6 empleando, en este caso, 1000 muestras de seal. De este modo, podremos considerar que el proceso adaptativo ha alcanzado el rgimen permanente. En estas condiciones, calcule el valor medio del vector de pesos y el desajuste. Suponiendo que a partir de la iteracin nmero 600 se ha alcanzado el rgimen permanente:
media_W0=mean(Wk(600:length(Wk(:,1)),1))-W0_min; media_W1=mean(Wk(600:length(Wk(:,2)),2))-W1_min; Desajuste = mean(error(600:length(error))-error_minimo)/error_minimo;
10.- Repita los ejercicios 3-6 utilizando segmentos de seales de 2000 muestras, un vector de pesos inicial dado por [-5,5] y una constante de ajuste de valor igual a la cota calculada en el ejercicio 6 dividida por 40 A partir de qu iteracin podemos suponer que el algoritmo ha convergido? Calcule el valor medio del vector de pesos en rgimen permanente y el desajuste. 11.- Realice todos los comentarios que crea oportunos en relacin a los resultados obtenidos.