Beruflich Dokumente
Kultur Dokumente
Los coeficientes de un filtro adaptivo sirven para identificar sistemas o filtros desconocidos, identificar sistemas inversos, cancelar ruidos o interferencias en tiempo real de las seales de entrada, predecir valores futuros de las seales, etc. Para elegir un filtro adaptivo adecuado a las necesidades del problema, hay que tener cuidado en cuanto a sus detalles. Por ejemplo, el primer detalle que se debe considerar es el trabajo que tiene que desarrollar el mismo, segn ste, se elegir el algoritmo apropiado a usarse para ese fin.
IDENTIFICACIN DE UN SISTEMA INVERSO: analice el siguiente diagrama para describir lo que es una identificacin de un sistema inverso: (usado en los sistemas de telefona cuando se transmite por pares de cobre).
CANCELACIN DE RUIDO: en cancelacin de ruido, los filtros adaptivos permiten remover ruido desde una seal en tiempo real.
Pgina 1
PREDICCIN: predecir seales puede parecer una tarea imposible, sin embargo es posible realizarlo empleando filtros adaptivos de la siguiente forma:
Pgina 2
FILTRO ADAPTIVO FIR QUE USA BLMS %Filtro Adaptivo FIR que usa BLMS %Luis Cabezas Tito x = randn(1,500); % Entrada al Filtro b = fir1(31,0.5); % Sistema FIR a ser identificado no = 0.1*randn(1,500); % Observacin de la Seal de Ruido d = filter(b,1,x)+no; % Seal Deseada mu = 0.008; % Tamao de paso del Bloque LMS n = 5; % Longitud del Bloque ha = adaptfilt.blms(32,mu,1,n); [y,e] = filter(ha,x,d); subplot(2,1,1); plot(1:500,[d;y;e]); title('Sistema de Identificacin de un Filtro FIR'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,1,2); stem([b.',ha.coefficients.']); legend('Actual','Estimada'); xlabel('Coeficiente #'); ylabel('Valor del Coeficiente'); grid on; FILTRO ADAPTIVO FIR QUE USA LA FFT BASADA EN BLMS %Filtro Adaptivo FIR que usa la FFT basada en BLMS %Luis Cabezas Tito x = randn(1,512); % Entrada al Filtro b = fir1(31,0.5); % Sistema FIR a ser Identificado no = 0.1*randn(1,512); % Observacin de la Seal de Ruido d = filter(b,1,x)+no; % Seal Deseada mu = 0.008; % Tamao del paso n = 16; % Longitud del Bloque ha = adaptfilt.blmsfft(32,mu,1,n); [y,e] = filter(ha,x,d); subplot(2,1,1); plot(1:500,[d(1:500);y(1:500);e(1:500)]); title('Sistema de Identificacin de un Filtro FIR'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,1,2); stem([b.',ha.coefficients.']); legend('actual','estimada'); grid on; xlabel('Coeficiente #'); ylabel('Valor del Coeficiente'); FILTRO ADAPTIVO FIR QUE USA UN LMS CON RETARDO %Filtro Adaptivo FIR que usa un LMS con retardo %Luis Cabezas Tito x = randn(1,500); % Intrada al Filtro b = fir1(31,0.5); % Sistema FIR a ser identificado n = 0.1*randn(1,500); % Observacin de la seal de ruido d = filter(b,1,x)+n; % Seal deseada mu = 0.008; % tamao del paso LMS. delay = 1; % Actualizacin del Retardo ha = adaptfilt.dlms(32,mu,1,delay); [y,e] = filter(ha,x,d); subplot(2,1,1); plot(1:500,[d;y;e]); title('Sistema de Identificacin de un Filtro FIR'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); Luis Cabezas Tito Procesamiento Adaptivo de Seales Pgina 3
subplot(2,1,2); stem([b.',ha.coefficients.']); legend('Actual','Estimada'); grid on; xlabel('Coeficiente #'); ylabel('Valor del Coeficiente'); FILTRO ADAPTIVO FIR QUE USA UN LMS CON UNA SEAL X FILTRADA %Filtro Adaptivo FIR que usa un LMS con una seal x Filtrada %Luis Cabezas Tito x = randn(1,1000); % Fuente de ruido g = fir1(47,0.4); % FIR primario para el sistema modelo n = 0.1*randn(1,1000); % Observacin de la seal de ruido d = filter(g,1,x)+n; % Seal a ser cancelada b = fir1(31,0.5); % FIR secundario para el sistema modelo mu = 0.008; % Tamao del paso LMS x-Filtrado ha = adaptfilt.filtxlms(32,mu,1,b); [y,e] = filter(ha,x,d); plot(1:1000,d,'b',1:1000,e,'r'); title('Control de Ruido Activo de una Seal de Ruido Aleatoria'); legend('Original','Atenuada'); xlabel('Tiempo'); ylabel('Valor de la Seal'); grid on; FILTRO ADAPTIVO FIR QUE USA LMS %Filtro Adaptivo FIR que usa LMS %Luis Cabezas Tito x = randn(1,500); % Entrada al Filtro b = fir1(31,0.5); % Sistema FIR a ser Identificado n = 0.1*randn(1,500); % Observation de la seal de ruido d = filter(b,1,x)+n; % Seal deseada mu = 0.008; % Tamao del paso LMS ha = adaptfilt.lms(32,mu); [y,e] = filter(ha,x,d); subplot(2,1,1); plot(1:500,[d;y;e]); title('Sistema de Identificacin de un Filtro FIR'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,1,2); stem([b.',ha.coefficients.']); legend('Actual','Estimada'); xlabel('Coeficiente #'); ylabel('Valor del Coeficiente'); grid on; FILTRO ADAPTIVO DE MNIMOS CUADRADOS NORMALIZADO NLMS %Filtro Adaptivo de Mnimos Cuadrados Normalizado nlms %Luis Cabezas Tito x = randn(1,500); % Entrada al Filtro b = fir1(31,0.5); % Sistema FIR aser identificado n = 0.1*randn(1,500); % Observacin de la seal de ruido d = filter(b,1,x)+n; % Seal deseada mu = 1; % Tamao del paso NLMS offset = 50; % Offset NLMS ha = adaptfilt.nlms(32,mu,1,offset); [y,e] = filter(ha,x,d); subplot(2,1,1); plot(1:500,[d;y;e]); legend('Deseada','Salida','Error'); title('Sistema de Identificacin de un Filtro FIR'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,1,2); Luis Cabezas Tito Procesamiento Adaptivo de Seales Pgina 4
stem([b', ha.coefficients']); legend('Actual','Estimada'); grid on; xlabel('Coeficiente #'); ylabel('Valor del Coeficiente'); FILTRO ADAPTIVO FIR CON SEAL DE DATOS %Filtro Adaptivo FIR con Seal de Datos %Luis Cabezas Tito d = 1; % Nmero de muestras del retardo ntr= 5000; % Nmero de Iteraciones v = sin(2*pi*0.05*[1:ntr+d]); % Seal Sinusoidal n = randn(1,ntr+d); % Seal de ruido x = v(1:ntr)+n(1:ntr); % Seal de entrada d = v(1+d:ntr+d)+n(1+d:ntr+d); % Seal deseada mu = 0.0001; % Tamao del paso de la Seal de Datos ha = adaptfilt.sd(32,mu); [y,e] = filter(ha,x,d); subplot(2,1,1); plot(1:ntr,[d;y;v(1:end-1)]); axis([ntr-100 ntr -3 3]); title('Perfeccionamiento Lineal Adaptivo de una seal sinusoidal de ruido'); legend('Observada','Perfeccionada','Original'); xlabel('Tiempo'); ylabel('Valor de la Seal'); [pxx,om] = pwelch(x(ntr-1000:ntr)); pyy = pwelch(y(ntr-1000:ntr)); subplot(2,1,2); plot(om/pi,10*log10([pxx/max(pxx),pyy/max(pyy)])); axis([0 1 -60 20]); legend('Observada','Perfeccionada'); xlabel('Frecuencia Normalizada (\tiempos \pi rad/muestra)'); ylabel('Densidad de Potencia Espectral'); grid on; FILTRO ADAPTIVO FIR QUE USA UN ALGORITMO DE SEAL-ERROR %Filtro Adaptivo FIR que usa un algoritmo de Seal-Error %Luis Cabezas Tito d = 1; % Nmero de muestras del retardo ntr= 5000; % Nmero de Iteraciones v = sin(2*pi*0.05*(1:ntr+d)); % Seal Sinusoidal n = randn(1,ntr+d); % Seal de Ruido x = v(1:ntr)+n(1:ntr); % Seal de Entrada --(Seal deseada retardada) d = v(1+d:ntr+d)+n(1+d:ntr+d); % Seal deseada mu = 0.0001; % tamao del paso de la Seal-Error ha = adaptfilt.se(32,mu); [y,e] = filter(ha,x,d); subplot(2,1,1); plot(1:ntr,[d;y;v(1:end-1)]); axis([ntr-100 ntr -3 3]); title('Perfeccionamiento Lineal Adaptivo de una Sinusoide con Ruido'); legend('Observada','Perfeccionada','Original'); xlabel('Tiempo'); ylabel('Valor de la Seal'); HWelch = spectrum.welch; InputPsd = psd(HWelch,x(ntr-1000:ntr)); OutputPsd = psd(HWelch,y(ntr-1000:ntr)); CompPsdEst = [InputPsd.Data/max(InputPsd.Data), OutputPsd.Data/max(OutputPsd.Data)]; subplot(2,1,2); plot(InputPsd.Frequencies/pi,10*log10(CompPsdEst)); axis([0 1 -60 20]); legend('Observada','Perfeccionada'); xlabel('Frecuencia Normalizada (\tiempos \pi rad/muestra)'); ylabel('Densidad Espectral de Potencia'); grid on; Luis Cabezas Tito Procesamiento Adaptivo de Seales Pgina 5
FILTRO ADAPTIVO FIR QUE USA UN ALGORITMO DE SEAL-SIGNO %Filtro Adaptivo FIR que usa un algoritmo de Seal-Signo %Luis Cabezas Tito d = 1; % Nmero de muestras del retardo ntr= 5000; % Nmero de Iteraciones v = sin(2*pi*0.05*(1:ntr+d)); % Seal Sinusoidal n = randn(1,ntr+d); % Seal ruido x = v(1:ntr)+n(1:ntr); % Seal de entrada --(Seal deseada retardada) d = v(1+d:ntr+d)+n(1+d:ntr+d); % Seal deseada mu = 0.0001; % Tamao del paso de la Seal-Error ha = adaptfilt.ss(32,mu); [y,e] = filter(ha,x,d); subplot(2,1,1); plot(1:ntr,[d;y;v(1:end-1)]); axis([ntr-100 ntr -3 3]); title('Perfeccionamiento Lineal Adaptivo de una Sinusoide de ruido'); legend('Observada','Perfeccionada','Original'); xlabel('Tiempo'); ylabel('Valor de la Seal'); HWelch = spectrum.welch; InputPsd = psd(HWelch,x(ntr-1000:ntr)); OutputPsd = psd(HWelch,y(ntr-1000:ntr)); CompPsdEst = [InputPsd.Data/max(InputPsd.Data), OutputPsd.Data/max(OutputPsd.Data)]; subplot(2,1,2); plot(InputPsd.Frequencies/pi,10*log10(CompPsdEst)); axis([0 1 -60 20]); legend('Observada','Perfeccionada'); xlabel('Frecuencia Normalizada (\tiempos \pi rad/muestra)'); ylabel('Densidad Espectral de Potencia'); grid on; FILTRO ADAPTIVO FIR QUE USA RLS %Filtro Adaptivo FIR que usa RLS %Luis Cabezas Tito x = randn(1,500); % Entrada al Filtro b = fir1(31,0.5); % Sistema Filr a ser identificado n = 0.1*randn(1,500); % Observacin de la seal de ruido d = filter(b,1,x)+n; % Seal deseada G0 = sqrt(10)*eye(32); % Matriz inversa de Correlacin de raiz cuadrada inicial lam = 0.99; % Factor dejado de RLS ha = adaptfilt.hrls(32,lam,G0); [y,e] = filter(ha,x,d); subplot(2,1,1); plot(1:500,[d;y;e]); title('Sistema de Identificacin de un filtro FIR'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,1,2); stem([b.',ha.Coefficients.']); legend('Actual','Estimada'); grid on; xlabel('Coeficiente #'); ylabel('Valor del Coeficiente'); FILTRO ADAPTIVO FIR QUE USA UN RLS VENTANEADO %Filtro Adaptivo FIR que usa un RLS ventaneado %Luis Cabezas Tito x = randn(1,500); % Entrada al filtro b = fir1(31,0.5); % Sistema FIR a ser identificado n = 0.1*randn(1,500); % Observacin de la seal de ruido d = filter(b,1,x)+n; % Seal deseada Luis Cabezas Tito Procesamiento Adaptivo de Seales Pgina 6
G0 = sqrt(10)*eye(32); % Matriz inversa de correlacin de raiz cuadrada inicial lam = 0.99; % Factor dejado RLS N = 64; % Longitud del bloque ha = adaptfilt.hswrls(32,lam,G0,N); [y,e] = filter(ha,x,d); subplot(2,1,1); plot(1:500,[d;y;e]); title('Sistema de Identificacin de un Filtro FIR'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,1,2); stem([b.',ha.Coefficients.']); legend('Actual','Estimada'); grid on; xlabel('Coeficiente #'); ylabel('Valor del Coeficiente'); FILTRO ADAPTIVO FIR QUE USA UNA DESCOMPOSICIN QR BASADO EN RLS %Filtro Adaptivo FIR que usa una descomposicin QR basado en RLS %Luis Cabezas Tito x = randn(1,500); % Entrada al filtro b = fir1(31,0.5); % Sistema FIR a ser identificado n = 0.1*randn(1,500); % Observacin de la seal de ruido d = filter(b,1,x)+n; % Seal deseada G0 = sqrt(.1)*eye(32); % Matriz de correlacin de raiz cuadrada inicial lam = 0.99; % Factor dejado RLS ha = adaptfilt.qrdrls(32,lam,G0); [y,e] = filter(ha,x,d); subplot(2,1,1); plot(1:500,[d;y;e]); title('Sistema de Identificacin de un Filtro FIR'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,1,2); stem([b.',ha.Coefficients.']); legend('Actual','Estimada'); grid on; xlabel('Coeficiente #'); ylabel('Valor del Coeficiente'); FILTRO ADAPTIVO FIR DE MNIMOS CUADRADOS RECURSIVO %Filtro Adaptivo FIR de mnimos cuadrados recursivo %Luis Cabezas Tito x = randn(1,500); % Entrada al filtro b = fir1(31,0.5); % Sistema FIR a ser identificado n = 0.1*randn(1,500); % Observacin de la seal de ruido d = filter(b,1,x)+n; % Seal deseada P0 = 10*eye(32); % Matriz inversa de correlacin de raiz cuadrada inicial lam = 0.99; % Factor dejado RLS ha = adaptfilt.rls(32,lam,P0); [y,e] = filter(ha,x,d); subplot(2,1,1); plot(1:500,[d;y;e]); title('Sistema de Identificacin de un Filtro FIR'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,1,2); stem([b.',ha.Coefficients.']); legend('Actual','Estimada'); xlabel('Coeficiente #'); ylabel('Valor del Coeficiente'); grid on;
Pgina 7
FILTRO ADAPTIVO FIR QUE USA MINIMOS CUADRADOS CON VENTANA DE DESPLAZAMIENTO TRANSVERSAL %Filtro Adaptivo FIR que usa minimos cuadrados con ventana de %desplazamiento transversal %Luis Cabezas tito x = randn(1,500); % Entrada al filtro b = fir1(31,0.5); % Sistema FIR a ser identificado n = 0.1*randn(1,500); % Observacin de la seal de ruido d = filter(b,1,x)+n; % Seal deseada L = 32; % Longitud del filtro adaptivo del = 0.1; % Factor de inicializacin de constreido suave N = 64; % Longitud del bloque ha = adaptfilt.swftf(L,del,N); [y,e] = filter(ha,x,d); subplot(2,1,1); plot(1:500,[d;y;e]); title('Identificacin del sistema de un Filtro FIR'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,1,2); stem([b.',ha.Coefficients.']); legend('Actual','Estimada'); xlabel('Coeficiente #'); ylabel('Valor del Coeficiente'); grid on; FILTRO ADAPTIVO FIR QUE USA UNA VENTANA DE MINIMOS CUADRADOS RLS %Filtro Adaptivo FIR que usa una ventana de minimos cuadrados RLS %Luis Cabezas tito x = randn(1,500); % Entrada al filtro b = fir1(31,0.5); % Sistema FIR a ser identificado n = 0.1*randn(1,500); % Observacin de la seal de ruido d = filter(b,1,x)+n; % Seal deseada P0 = 10*eye(32); % Matriz inversa de correlacin inicial lam = 0.99; % Factor dejado RLS N = 64; % Block length ha = adaptfilt.swrls(32,lam,P0,N); [y,e] = filter(ha,x,d); subplot(2,1,1); plot(1:500,[d;y;e]); title('Identificacin del Sistema de un Filtro FIR'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,1,2); stem([b.',ha.Coefficients.']); legend('Actual','Estimada'); xlabel('Coeficiente #'); ylabel('Valor del Coeficiente'); grid on FILTRO ADAPTIVO FIR QUE USA UNA INVERSIN DE MATRIZ DIRECTA %Filtro Adaptivo FIR que usa una Inversin de Matriz directa %Luis Cabezas Tito D = 16; % Nmero de muestras del retardo b = exp(j*pi/4)*[-0.7 1]; % Coeficientes del Numerador de canal a = [1 -0.7]; % Coeficientes del Denominador de canal ntr= 1000; % Nmero de iteraciones s = sign(randn(1,ntr+D)) + j*sign(randn(1,ntr+D));% Seal de banda base n = 0.1*(randn(1,ntr+D) + j*randn(1,ntr+D)); % Seal de ruido r = filter(b,a,s)+n; % Seal recibida x = r(1+D:ntr+D); % Seal de entrada (Seal recibida) d = s(1:ntr); % Seal deseada (Seal QPSK retardada) mu = 0.1; % Tamao del paso Luis Cabezas Tito Procesamiento Adaptivo de Seales Pgina 8
po = 4; % Orden de proyeccin offset = 0.05; % Matriz de covarianza por distancia ha = adaptfilt.ap(32,mu,po,offset); [y,e] = filter(ha,x,d); subplot(2,2,1); plot(1:ntr,real([d;y;e])); title('Componentes en Fase'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,2,2); plot(1:ntr,imag([d;y;e])); title('Componentes en Cuadratura'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,2,3); plot(x(ntr-100:ntr),'.'); axis([-3 3 -3 3]); title('Grfica Dispersa de la Seal Recibida'); axis('square'); xlabel('Real[x]'); ylabel('Imag[x]'); grid on; subplot(2,2,4); plot(y(ntr-100:ntr),'.'); axis([-3 3 -3 3]); title('Grfica Dispersa de la Seal Ecualizada'); axis('square'); xlabel('Real[y]'); ylabel('Imag[y]'); grid on FILTRO ADAPTIVO FIR QUE USA UNA MATRIZ DE ACTUALIZACIN RECURSIVA %Filtro Adaptivo FIR que usa una matriz de actualizacin recursiva %Luis Cabezas Tito D = 16; % Nmero de muestras de retardo b = exp(1j*pi/4)*[-0.7 1]; % Coeficientes del Numerador de canal a = [1 -0.7]; % Coeficientes del Denominador de canal ntr= 1000; % Nmero de iteraciones s = sign(randn(1,ntr+D)) + 1j*sign(randn(1,ntr+D)); % Banda base n = 0.1*(randn(1,ntr+D) + 1j*randn(1,ntr+D)); % Seal de ruido r = filter(b,a,s)+n; % Seal recibida x = r(1+D:ntr+D); % Seal de entrada (Seal recibida) d = s(1:ntr); % Seal deseada (Seal QPSK retardada) mu = 0.1; % Tamao del paso po = 4; % Orden de proyeccin offset = 0.05; % Offset ha = adaptfilt.apru(32,mu,po,offset); [y,e] = filter(ha,x,d); subplot(2,2,1); plot(1:ntr,real([d;y;e])); title('Componentes en Fase'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,2,2); plot(1:ntr,imag([d;y;e])); title('Componentes en Cuadratura'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,2,3); plot(x(ntr-100:ntr),'.'); axis([-3 3 -3 3]); title('Grfica Dispersa de la Seal Recibida'); axis('square'); xlabel('Real[x]'); ylabel('Imag[x]'); grid on; subplot(2,2,4); plot(y(ntr-100:ntr),'.'); axis([-3 3 -3 3]); title('Grfica Dispersa de la Seal Ecualizada'); axis('square'); xlabel('Real[y]'); ylabel('Imag[y]'); grid on; FILTRO ADAPTIVO FIR QUE USA UN BLOQUE AFIN DE PROYECCIN %Filtro Adaptivo FIR que usa un bloque afin de proyeccin %Luis Cabezas Tito D = 16; % Retardo b = exp(1j*pi/4)*[-0.7 1]; % Coeficientes del Numerador a = [1 -0.7]; % Coeficientes del Denominador ntr= 1000; % Nmero de iteraciones s = sign(randn(1,ntr+D))+1j*sign(randn(1,ntr+D));% Seal Banda base Luis Cabezas Tito Procesamiento Adaptivo de Seales Pgina 9
n = 0.1*(randn(1,ntr+D) + 1j*randn(1,ntr+D)); % Seal de ruido r = filter(b,a,s)+n; % Seal recibida x = r(1+D:ntr+D); % Seal de entrada(Seal recibida) d = s(1:ntr); % Seal deseada (Seal QPSK retardada) mu = 0.5; % Tamao del paso po = 4; % Orden de proyeccin offset = 1.0; % Offset la matriz de covarianza ha = adaptfilt.bap(32,mu,po,offset); [y,e] = filter(ha,x,d); subplot(2,2,1); plot(1:ntr,real([d;y;e])); title('Componentes en Fase'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,2,2); plot(1:ntr,imag([d;y;e])); title('Componentes en Cuadratura'); legend('Deseada','Salida','Error'); xlabel('Tiempo'); ylabel('Valor de la Seal'); subplot(2,2,3); plot(x(ntr-100:ntr),'.'); axis([-3 3 -3 3]); title('Grfica Dispersa de la Seal Recibida'); axis('square'); xlabel('Real[x]'); ylabel('Imag[x]'); grid on; subplot(2,2,4); plot(y(ntr-100:ntr),'.'); axis([-3 3 -3 3]); title('Grfica Dispers de la Seal Ecualizada'); axis('square'); xlabel('Real[y]'); ylabel('Imag[y]'); grid on;
FILTRO KALMAN
>> dspadpt3
Para saber ms sobre el Filtro Kalman con MATLAB, acceder a demo del mismo luego buscar por Kalman. Se tendr la ventana de la pgina siguiente.
Pgina 10
Investigar cada ejemplo con problemas concretos, es decir, ejecutarlos en MATLAB. Estudiar a detalle el ejemplo de Radar Tracking y otros.
Pgina 11
Pgina 12