ejemplo lms matlab

8
ESCUELA POLITÉNICA SUPERIOR. UNIVERSIDAD DE ALCALÁ MÁSTER EN TECNOLOGÍAS DE LA INFORMACIÓN Y LAS TELECOMUNICACIONES Técnicas de optimización en ingeniería. Programación no lineal. Práctica El algoritmo LMS. Ejemplo de aplicación Mª Pilar Jarabo Amores Mayo de 2007

Upload: fafa86

Post on 22-Jan-2016

133 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ejemplo Lms Matlab

ESCUELA POLITÉNICA SUPERIOR. UNIVERSIDAD DE ALCALÁ

MÁSTER EN TECNOLOGÍAS DE LA INFORMACIÓN Y LAS TELECOMUNICACIONES

Técnicas de optimización en ingeniería.

Programación no lineal. Práctica

El algoritmo LMS. Ejemplo de aplicación

Mª Pilar Jarabo Amores Mayo de 2007

Page 2: Ejemplo Lms Matlab

Técnicas de Optimización en Ingeniería. Práctica

Máster en Tecnologías de la Información y las Comunicaciones 2

Estudio del combinador lineal adaptativo En primer lugar se propone el estudio del combinador lineal adaptativo. Para ello considere el filtro FIR adaptativo cuyo esquema se presenta a continuación: Donde:

[ ]

[ ]

[ ]

2sen

es un ruido aditivo, blanco y gaussiano de media nula y varianza igual a 0,05.

22 cos

kx kN

n k

kd k N

π

π

⎛ ⎞= ⎜ ⎟⎝ ⎠

⎛ ⎞= ⋅ ⎜ ⎟⎝ ⎠

Matriz de autocorrelación de la señal de entrada, Rxx:

[ ]

[ ]

2

2

20.5 0.5 cos

20.5 cos 0.5

E n kN

E n kN

π

π

⎡ ⎤⎛ ⎞⎡ ⎤+ ⋅ ⎜ ⎟⎢ ⎥⎣ ⎦ ⎝ ⎠⎢ ⎥=⎢ ⎥⎛ ⎞ ⎡ ⎤⋅ +⎢ ⎥⎜ ⎟ ⎣ ⎦⎝ ⎠⎣ ⎦

XXR

Matriz de correlación cruzada entre la entrada y la salida deseada, Rxd:

0 2sen

⎡ ⎤⎢ ⎥= ⎛ ⎞⎢ ⎥− ⎜ ⎟⎢ ⎥⎝ ⎠⎣ ⎦

XdR

El objetivo es encontrar el vector de pesos óptimo que minimice el error cuadrático medio entre la salida del filtro y la salida deseada.

x[k] + n[k]

+

+ +

W0 W1

z-1

y[k]

d[k]

e[k]

+

-

Page 3: Ejemplo Lms Matlab

Técnicas de Optimización en Ingeniería. Práctica

Máster en Tecnologías de la Información y las Comunicaciones 3

1.- Para N = 30, realice una representación gráfica de la superficie de error asociada al problema planteado. La expresión de la superficie de error es la siguiente:

2 2 2T TTk k k kE E dξ ε⎡ ⎤ ⎡ ⎤= = + −⎣ ⎦ ⎣ ⎦ XX XdW R W R W

Sustituyendo los valores indicados:

[ ] [ ]( )2 2 2 20 1, 0 1 1

2 20.5 ( ) cos 2 sen 2k k k k kE k E n k w w w w wN Nπ πξ ε ⎛ ⎞ ⎛ ⎞⎡ ⎤ ⎡ ⎤= = + ⋅ + + + +⎜ ⎟ ⎜ ⎟⎣ ⎦ ⎣ ⎦ ⎝ ⎠ ⎝ ⎠

% Representación 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; figure(1); mesh(w0k,w1k,sup_error); title('Superficie de error'); Puede obtener una representación en curvas de nivel mediante la función contour(·) de Matlab: figure(2); contour(w0k,w1k,sup_error) 2.- Calcule el vector de pesos óptimo y el error cuadrático medio mínimo para el problema planteado. Recuerde que:

[ ]( )

[ ]( )[ ]( )

22 2

1

2

22 2

2 22 cos sen

21 cos

*22 1 2 sen

21 cos

N N

E n kN

E n kN

E n kN

π π

π

π

π

⎡ ⎤⎛ ⎞ ⎛ ⎞⋅ ⋅⎜ ⎟ ⎜ ⎟⎢ ⎥⎝ ⎠ ⎝ ⎠⎢ ⎥⎛ ⎞⎢ ⎥⎡ ⎤+ − ⎜ ⎟⎣ ⎦⎢ ⎥⎝ ⎠

⎢ ⎥= ⋅ = ⎢ ⎥

⎢ ⎥⎛ ⎞⎡ ⎤⎢ ⎥− ⋅ + ⋅ ⋅ ⎜ ⎟⎣ ⎦ ⎝ ⎠⎢ ⎥⎢ ⎥⎛ ⎞⎡ ⎤+ −⎢ ⎥⎜ ⎟⎣ ⎦⎢ ⎥⎝ ⎠⎣ ⎦

XX XdW R R

Page 4: Ejemplo Lms Matlab

Técnicas de Optimización en Ingeniería. Práctica

Máster en Tecnologías de la Información y las Comunicaciones 4

Y que el error cuadrático medio mínimo viene dado por:

[ ]22min min * * 2 * *T T T

kE d E d kξ ξ ⎡ ⎤⎡ ⎤= = − − = − ⋅⎣ ⎦ ⎣ ⎦XX Xd XdW R W R W R W

% Cálculo 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)); % Cálculo del mínimo de la superficie de error: Rxd_real = [0; -sin(2*pi/N)]; potencia_deseada = 2; % Potencia de la señal deseada: error_minimo = potencia_deseada - (Rxd_real)'*[W0_min; W1_min]; 3.- Represente el vector de pesos óptimo en la gráfica que obtuvo con la función contour(·). figure(2); hold on; plot(W0_min, W1_min, '*'); hold off; Algoritmo LMS En clases de teoría se ha estudiado el método de máxima pendiente cuya regla de actualización de los coeficientes del filtro es la siguiente: En el estudio del método se asumió que se disponía de una medida exacta del vector gradiente en cada iteración. En la mayoría de las aplicaciones no se dispone de una medida exacta y debe utilizarse una estimación basada en una serie de observaciones. Esta estimación es ruidosa y puede considerarse como el gradiente real contaminado por un ruido aditivo. El algoritmo LMS emplea una estimación especial del gradiente que resulta válida para el filtro FIR adaptativo y se puede extender a filtros IIR adaptativos. Como se verá a continuación, es un algoritmo muy importante debido a su simplicidad y facilidad de cálculo. En cada iteración, el error se calcula como: Y la regla de actualización de los coeficientes viene dada por:

( ) ( )1 2 2k k k k kα ξ α+ = − ∇ = − −XX XdW W W W R W R

T Tk k k k k k kd dε = − = −X W W X

( )1 k k kα ξ+ = − ∇W W W

Page 5: Ejemplo Lms Matlab

Técnicas de Optimización en Ingeniería. Práctica

Máster en Tecnologías de la Información y las Comunicaciones 5

Por tanto, para obtener una estimación del gradiente es necesario estimar el error cuadrático medio. Este algoritmo utiliza un método instantáneo, de modo que la estimación del error cuadrático medio en cada iteración es exactamente el cuadrado del valor del error medido: El gradiente estimado tendrá la forma: Y el algoritmo LMS queda: 1.- Escriba una función lms.m que desarrolle el algoritmo LMS. Debe recibir los siguientes argumentos de entrada:

• la señal aplicada a la entrada del filtro, • la señal deseada, • el orden del filtro cuyos coeficientes se van a ajustar, • el número de iteraciones, • la constante de ajuste • el vector de pesos inicial.

A su salida devolverá: • la salida en cada iteración 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 2ˆ ˆ= = k k kEξ ε ε⎡ ⎤⎣ ⎦

( ) ( ) ( ) ( )

( ) ( ) ( ) ( ) ( ) ( )0 1

2 2 2

0 1 0 1

ˆ ˆ ˆˆ , ,...,

, ,..., 2 , ,...,

T

k k k k k kk k

L

T T

k k k k k k k k k k k kk

L L

w w w

w w w w w w

ξ ξ ξξ

ε ε ε ε ε εε

⎡ ⎤∂ ∂ ∂∇ = ⎢ ⎥

∂ ∂ ∂⎢ ⎥⎣ ⎦

⎡ ⎤ ⎡ ⎤∂ ∂ ∂ ∂ ∂ ∂= =⎢ ⎥ ⎢ ⎥∂ ∂ ∂ ∂ ∂ ∂⎣ ⎦ ⎣ ⎦

W W WW

W W W W W W

( ) ( )0 ˆ 0,1,..., 2

L

k mk mkk m

ik k k k ki i

d x wx i L

w wε

ξ ε=

⎛ ⎞∂ −⎜ ⎟∂ ⎝ ⎠= = − = ⇒∇ = −

∂ ∂

∑WW X

1 2 k k k kαε+ = +W W X

Page 6: Ejemplo Lms Matlab

Técnicas de Optimización en Ingeniería. Práctica

Máster en Tecnologías de la Información y las Comunicaciones 6

2.- Calcule una cota de la constante de ajuste para asegurar la convergencia del algoritmo. % Cálculo de la cota de la constante de ajuste: % Potencia de la señal: potencia = mean(entrada.^2); orden=1; Cota = 1/((orden + 1)*potencia); 3.- Ejecute el algoritmo utilizando las señales que descritas en la primera parte de la práctica. Utilice tres constantes de ajuste: Cota , Cota/10 y Cota/40. Elija como vector de pesos inicial el [-5,5]. % Generación de las señales. k = 0:199; N = 30;x = sin((2*pi*k)/N); % Se generan 200 muestras de señal. 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 gráfica las curvas de nivel de la superficie de error y la evolución del vector de pesos durante el proceso adaptativo. % Volvemos a elegir los ejes para realizar una representación 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('Evolución del vector de pesos durante el proceso adaptativo') hold off 5.- Represente en dos gráficas diferentes la evolución de cada uno de los pesos durante el proceso y compárela con el valor óptimo para cada uno de ellos. numero=200; % Número 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('Evolución 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('Evolución del segundo coeficiente durante el proceso adaptativo');

Page 7: Ejemplo Lms Matlab

Técnicas de Optimización en Ingeniería. Práctica

Máster en Tecnologías de la Información y las Comunicaciones 7

6.-Represente la curva de aprendizaje. figure(4); plot(error); hold on; plot(error_minimo*ones(1,length(error)));hold off; title('Curva de aprendizaje'); 7.- Comente los resultados obtenidos. 8.- Repita los ejercicios 3, 4, 5 y 6 utilizando segmentos de señales de 600 muestras (600 iteraciones en el algoritmo adaptativo, numero=600) y los valores de la cota que considere más apropiados. Compare los resultados con los obtenidos al emplear 200 muestras. Nota: Se recomienda que escriba un procedimiento que, pidiendo como parámetros el número de muestras (número 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 señal. De este modo, podremos considerar que el proceso adaptativo ha alcanzado el régimen permanente. En estas condiciones, calcule el valor medio del vector de pesos y el desajuste. Suponiendo que a partir de la iteración número 600 se ha alcanzado el régimen 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 señales 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é iteración podemos suponer que el algoritmo ha convergido? Calcule el valor medio del vector de pesos en régimen permanente y el desajuste. 11.- Realice todos los comentarios que crea oportunos en relación a los resultados obtenidos.

Page 8: Ejemplo Lms Matlab

Técnicas de Optimización en Ingeniería. Práctica

Máster en Tecnologías de la Información y las Comunicaciones 8

ANEXO: Función lms.m function [yk,error,Wk]=lms(senalr,senal,orden,n_iter,mu,Winicial) % Descripción: Función que desarrolla el algoritmo LMS % % [yk,error,Wk]=Lms(senalr,senal,orden,n_iter,mu) % % Entradas: senalr: señal que se utiliza como entrada al filtro % senal: señal deseada. % orden: orden del filtro FIR cuyos coeficientes se van a ajustar. % n_iter: nº de iteraciones en el aprendizaje. % mu: constante de ajuste. % Winicial: vector de pesos inicial. % Salidas: yk: salida del filtro durante el proceso de adaptación. % error: error cuadrático medio estimado con todas las % muestras disponibles de la señal utilizando el % vector de pesos para la iteración i-ésima. % Wk: matriz que contiene los vectores de pesos que se han ido % generando por el proceso adaptativo final. % % Autor: María Pilar Jarabo. % Fecha: Mayo de 1996. % Señal a la entrada del filtro. Xk=[zeros(1,orden+1)]; % Valor inicial de los pesos. Wk(1,:)=Winicial; % Desarrollo del algoritmo. for i=1:n_iter Xk(orden+1)=[]; Xk=[senalr(i) Xk]; yk(i)=Xk*(Wk(i,:))'; err(i)=senal(i)-yk(i); Wk((i+1),:)=Wk(i,:)+(2*mu*err(i)*Xk); % Estimamos el error cuadrático medio cuando se fija el vector de pesos % calculado en esta iteración. error(i)=(sum((senal-filter(Wk((i+1),:),1,senalr)).^2))/length(senal); end; % Se supone que la señal deseada y la señal de entrada al filtro % tienen el mismo número de muestras.