Ingeniería de Telecomunicación Señales y Sistemas II PRÁCTICA 2 ESTIMACIÓN DE PARÁMETROS EN SEÑALES ALEATORIAS CURSO 2008 / 2009 Departamento de Teoría de la Señal y Comunicaciones Señales y Sistemas II Práctica 2: Estimación Las señales con las que un ingeniero de Telecomunicación trabaja en la práctica no son, la mayor parte de las veces, deterministas. Por ejemplo, una señal de voz no puede ser descrita por una ecuación, ya que los parámetros que la caracterizan cambian constantemente con el tiempo. No obstante, esta señal tiene ciertas características que la distinguen, por ejemplo, de una señal de televisión. De hecho, casi todas las señales que se manejan en comunicaciones y en otros muchos campos de la ingeniería y de la ciencia son de naturaleza estocástica (también llamada aleatoria). Una señal aleatoria tiene dos facetas: una, que su valor (amplitud) en un instante de tiempo determinado es una variable aleatoria, y otra, que para cada resultado (realización) del experimento aleatorio tenemos una función temporal. En definitiva, la definición de una señal aleatoria se realiza por medio de sus propiedades estadísticas, como son: su función densidad de probabilidad, su función densidad de probabilidad conjunta, su media, su función de auto‐ correlación, etc. En los problemas teóricos, estas descripciones cuantitativas consideran el conjunto de todas las realizaciones del proceso aleatorio particular, siendo estas funciones deterministas, las cuales poseen, desde un punto de vista matemático, un buen comportamiento. Sin embargo, en un problema práctico, estas funciones deben ser estimadas, utilizando medidas de un conjunto finito de datos tomados a partir de observaciones del proceso aleatorio. Las estimaciones así realizadas son en sí mismas variables aleatorias, dado que se forman a partir de variables aleatorias. Por ello, sólo podemos hacer aseveraciones probabilísticas acerca de la proximidad de los valores estimados respecto a los valores reales, por ello es por lo que suele hablar de parámetros como el intervalo de confianza de una estimación o el máximo error cometido en la estimación, como se analizó en la práctica 1 de esta asignatura. En el conjunto de ejercicios que a continuación se presentan, se tratará la descripción y el procesado de señales aleatorias, principalmente bajo los supuestos de estacionariedad y ergodicidad. Además estudiaremos cómo se ven influenciados los promedios de determinadas variables de las señales cuando una señal estocástica se procesa a través de un sistema lineal o se somete a una transformación no lineal. En la mayoría de los casos, las estimaciones se realizarán con MATLAB © calculando promedios temporales o de conjuntos de realizaciones. Curso 2008 / 2009 1 Señales y Sistemas II Práctica 2: Estimación Las estimaciones así realizadas deben entonces compararse con los valores exactos conocidos a partir de la teoría. El conocimiento de estos resultados debe abrir el camino para diseñar sistemas que generen señales aleatorias con unas propiedades determinadas. Por ejemplo, se puede obtener una descripción paramétrica de una señal aleatoria dada en función de los coeficientes de un filtro lineal que produce la señal deseada cuando se excita con “ruido blanco” (señal incorrelada). Relacionado con esta representación, aparece el problema de la predicción y la decorrelación, es decir, el diseño de un sistema cuya salida sea aproximadamente una versión adelantada de la entrada, o tal que a partir de una secuencia de entrada correlada se obtenga una secuencia que es ruido blanco, es decir, el proceso inverso al anteriormente expuesto del filtro lineal. Como en el caso de las señales deterministas, interesa una descripción tanto en un dominio temporal como frecuencial. Desafortunadamente, la transformada de Fourier directa de las señales aleatorias no es útil debido a la variabilidad temporal de los parámetros que caracterizan la señal; sin embargo, la transformada de Fourier directa de su función de autocorrelación sí lo es, la cual recibe el nombre de densidad espectral de potencia. ESTUDIO 1: VARIABLES ALEATORIAS En este estudio se introducirán las propiedades elementales de las variables aleatorias. Los distintos apartados de los que consta este estudio se concentran en estimar la media, la varianza y la función de densidad de probabilidad de una serie de variables aleatorias. En general, una variable aleatoria (v.a.) se describe por su función densidad de probabilidad (f.d.p.) de la siguiente manera: fv (v) = d Fv (v) dv (1) donde Fv (v) representa la probabilidad de que una variable aleatoria v no supere un valor € particular de la misma v , es decir: € Fv (v) = Probabilidad(v ≤ v) € Curso 2008 / 2009 € € (2) 2 Señales y Sistemas II Práctica 2: Estimación En muchos casos, para caracterizar la variable aleatoria bajo estudio, tan sólo son necesarios determinados momentos, donde las más utilizados son la media y la varianza, los cuales se pueden calcular mediante las expresiones dadas en (3). ∞ mv = E{v} = ∫ vf (v)dv v −∞ 2 v { 2 ∞ } ∫ (v − m ) σ = E [v − mv ] = v 2 (3) fv (v)dv −∞ Los momentos de la variable aleatoria bajo estudio son constantes, pero no pueden determinarse de forma exacta a partir de una serie de realizaciones de la variable aleatoria. En € los distintos apartados presentados a continuación, las realizaciones de la variable aleatoria se crearán con un generador de números pseudo‐aleatorios, cuyas propiedades se conocen con suficiente precisión. De este modo, su f.d.p., su media y su varianza se estimarán a partir de un número finito de realizaciones de la variable aleatoria y se compararán entonces con los valores teóricos. La función de generación de datos pseudo‐aleatorios de MATLAB rand(M,N) genera una matriz de M filas y N columnas de números pseudo‐aleatorios con una distribución de probabilidad de tipo uniforme en el intervalo [0,1]. Por otro lado, la función randn(M,N) trabaja de la misma manera que la anterior pero generando datos pseudo‐aleatorios con una distribución de probabilidad de tipo gaussiana con media nula y varianza unitaria. Otra función de MATLAB que también nos puede ser de bastante utilidad es la función hist(x), que también se puede invocar como hist(x, nbarras). Esta función calcula y dibuja el histograma (en forma de diagrama de barras) correspondiente a los datos contenidos en el vector o matriz x, que para nuestro caso de estudio consideraremos que es un vector de números pseudo‐aleatorios con una cierta función de distribución de probabilidad. El número de barras que utiliza esta función es por defecto de 10, pero se puede indicar otro por medio de el segundo parámetro (nbarras) indicado con anterioridad. Curso 2008 / 2009 3 Señales y Sistemas II Práctica 2: Estimación Estudio 1.1.: Estudio de datos pseudo‐aleatorios con una f.d.p. de tipo uniforme Genere un vector de números pseudo‐aleatorios con una f.d.p. de tipo uniforme en el intervalo [0,1]. Para ello, utilice al menos varios miles de elementos (realizaciones) en el vector. Posteriormente realice los siguientes pasos: 1. Utilice las funciones de MATLAB hist(…), mean(…) y std(…) para estimar su f.d.p., su media y su varianza, respectivamente. Tenga en cuenta que, si se quiere estimar la f.d.p., el histograma debe ser normalizado, de tal forma que presente un área total igual a la unidad. 2. Como hemos comentado anteriormente, la función de MATLAB rand(…) produce números pseudo‐aleatorios con una f.d.p. uniforme en el intervalo [0,1]. De este modo es posible determinar teóricamente los valores de la media y la varianza de la variable aleatoria generada. Por todo ello, determine estos valores teóricos y compárelos con los estimados. ¿Coinciden los valores teóricos con los obtenidos en la práctica? ¿Bajo qué condiciones coincides estos valores? 3. Repita 100 veces el experimento numérico realizado previamente. ¿Se obtienen siempre los mismos valores estimados? En caso de que no se obtengan siempre los mismos resultados, debería observar cómo los valores estimados caen alrededor de los valores teóricos. Finalmente, dibuje para ello un histograma de los resultados estimados de media y otro de varianza. ¿Qué relación aprecia entre estos histogramas y los resultados teóricos? Estudio 1.2.: Estudio de datos pseudo‐aleatorios con una f.d.p. de tipo gaussiana Genere un vector de números pseudo‐aleatorios con una f.d.p. de tipo gaussiana de media y varianza la que usted desee. Para ello, utilice al menos varios miles de elementos (realizaciones) en el vector. Posteriormente realice los siguientes pasos: 1. Como en el estudio 1.1., calcule las estimaciones de su f.d.p., su media y su varianza. Compare la media y la varianza obtenidas con sus valores teóricos y repita el proceso varias veces para observar cómo varían esos momentos. Curso 2008 / 2009 4 Señales y Sistemas II Práctica 2: Estimación 2. La representación del histograma debería aproximarse a la f.d.p. teórica, que en este caso tiene la forma de la típica campana de Gauss. Por si nos es de ayuda, la expresión de la f.d.p. de una gaussiana de media mv y desviación típica σ v es: fv (v) = 2 2 1 e−( v−mv ) /2σ v σ v 2π (4) € € Como en el estudio 1.1, el histograma obtenido mediante la función hist(…) de MATLAB debe ser normalizado. Una vez normalizado, en su representación gráfica superponga la € representación de la f.d.p. teórica (utilice help plot o help hold para ver los diferentes modos en que se pueden ver varias curvas en una misma gráfica) con la obtenido de forma práctica. Es más, pruebe con diferentes números de barras y diferentes longitudes de los vectores hasta conseguir un ajuste razonable. Estudio 1.3.: Estudio de variables aleatorias independientes Podemos llamar dos veces al generador de números pseudo‐aleatorios de MATLAB (rand(…) o randn(…)) para obtener valores de dos variables aleatorias diferentes. La interrelación de estas dos variables aleatorias se describe por su f.d.p. conjunta, la cual es función de dos variables aleatorias. De este modo, suponga que v1 y v2 son dos variables aleatorias. La f.d.p. conjunta es: f (x, y) = ∂2 F(x, y) ∂x∂y (5) donde su función de distribución de probabilidad F(x, y) viene dada por la siguiente expresión: € F(x, y) = Probabilidad{v1 ≤ x, v 2 ≤ y} € Por ejemplo, la f.d.p. gaussiana bidimensional puede expresarse como: € fv1,v2 (x, y) = 1 2π C e 1 − (v−m v )T C −1 (v−m v ) 2 (6) (7) donde el vector aleatorio v=[x y]T, mientras que mv=[mv1 mv2]T y C es la matriz de covarianza de las dos variables aleatorias. Definiendo v˜ i = v i − m vi , la matriz de covarianza buscada se puede € expresar como: € Curso 2008 / 2009 5 Señales y Sistemas II v˜ C = E 1 [ v˜ 1 v˜ 2 Práctica 2: Estimación E {v˜ 12 } E {v˜ 1 v˜ 2 } v˜ 2 ] = 2 E {v˜ 2 v˜ 1} E {v˜ 2 } (8) Como se puede comprobar, la matriz de covarianza es siempre simétrica y definida no negativa. Hay dos formas de estimar la f.d.p. conjunta: una consiste en calcular el histograma € bidimensional, mientras que la otra consiste en asumir que la f.d.p. es gaussiana y estimar la matriz de covarianza para utilizarla más adelante. Para probar estos métodos, genere dos vectores aleatorios conteniendo resultados de dos variables aleatorias gaussianas. Utilice vectores de al menos varias miles de realizaciones, de media nula y con varianzas 1 y 3, respectivamente. Una vez generados estos datos pseudo‐aleatorios: 1. Deduzca la expresión matemática de la f.d.p. conjunta, la cual es una gaussiana bidimensional. Observe la ayuda de la función de MATLAB meshgrid(…) para generar el dominio (x,y) para el cálculo y representación de dicha expresión. Represente las curvas de nivel de la f.d.p. gaussiana conjunta, utilizando para ello la función contour(…) de MATLAB y observe que su forma es elíptica. 2. Calcule una estimación de la matriz de covarianza tomando promedios (esperanzas matemáticas) de v12 , v 22 y v1v 2 . Compare estas estimaciones con los valores teóricos de la matriz de covarianza. Represente la función gaussiana bidimensional utilizando esta matriz de covarianza estimada y compare sus curvas de nivel con € € € las del anterior apartado. 3. Escriba una función en MATLAB (llámese hist2(…)) para calcular el histograma bidimensional de un par de vectores. Incluya como parámetro el número de barras a representar. Aproveche la existencia de la versión para una dimensión, así como de la función find(…) para calcular una columna (o fila) en cada iteración. 4. Utilice hist2(…) para estimar directamente la f.d.p. a partir de los datos. Represente esta f.d.p. sobre la misma gráfica que la f.d.p. teórica. Utilice la función contour(…), para representar unas pocas curvas de nivel para cada f.d.p. de tal forma que la comparación entre curvas se pueda realizar de forma fácil y sencilla. 5. Dado que estas variables aleatorias estaban generadas independientemente, dichas variables deben estar incorreladas. La definición de independencia supone Curso 2008 / 2009 6 Señales y Sistemas II Práctica 2: Estimación que la f.d.p. bidimensional puede expresarse como producto de las f.d.p. unidimensionales. Esto implica que la media del producto de las variables aleatorias es el producto de las medias, que en el caso de variables aleatorias de media nula será cero. Verifique que se trata de variables aleatorias independientes, realizando lo siguiente: estime las funciones densidad de probabilidad unidimensionales de las variables aleatorias, obtenga una nueva estimación de la f.d.p. bidimensional multiplicando las dos funciones densidad de probabilidad unidimensionales. Represente las curvas de nivel de esta nueva estimación junto con la f.d.p. bidimensional teórica. Estudio 1.4.: Estudio de variables aleatorias correladas En este estudio se calculará la f.d.p. conjunta de dos variables aleatorias correladas. Para ello, genere dos vectores aleatorios con distribución gaussiana, conteniendo cada uno de ellos varios miles de elementos. Estos vectores deberán tener media nula y varianza 1 y 2, respectivamente. Forme dos nuevos vectores aleatorios tomando la suma y la diferencia de los primeros. Estos vectores suma y diferencia serán utilizados para las siguientes pruebas a realizar durante este estudio. De este modo: 1. Determine la forma teórica de la f.d.p. gaussiana conjunta. Obtenga los valores exactos de los elementos de la matriz de covarianza. 2. Realice la representación gráfica de la gaussiana bidimensional a partir de la función obtenida en el apartado anterior. Utilice la función meshgrid(…) para generar el dominio (x,y) sobre el que calcularla y representarla. 3. Estime los elementos de la matriz de covarianza bidimensional a partir de los vectores de prueba y represente la f.d.p. conjunta estimada. Compare la f.d.p. estimada y la teórica realizando una representación con un número pequeño de curvas de nivel para cada una. Para ello utilice la función contour(…). 4. Estime la f.d.p. calculando el histograma bidimensional. Realice una representación de sus curvas de nivel y compárelo con la f.d.p. teórica. En este caso, las dos variables aleatorias están correladas, por ello debería verificar que la f.d.p. Curso 2008 / 2009 7 Señales y Sistemas II Práctica 2: Estimación bidimensional no puede expresarse como producto de dos funciones densidad de probabilidad unidimensionales. ESTUDIO 2: SEÑALES ALEATORIAS ERGÓDICAS, ESTACIONARIAS Y NO ESTACIONARIAS Dado que la idea subyacente del procesado de señales estocásticas es conocer algunos detalles acerca de la/s f.d.p. que definen dicho proceso, un problema importante para el procesado de señales estocásticas es cómo estimar dicha f.d.p. a partir de una única realización de dicho proceso, donde por realización denominamos a un conjunto de elementos (datos o valores) de dicho proceso aleatorio. De este modo, si sólo tenemos una realización, no podemos promediar sobre un conjunto cómo se hace en el caso de las variables aleatorias. En su lugar, debemos trabajar con la suposición de que el promediado temporal sobre una sola señal será suficiente para conocer la f.d.p. La suposición que nos permite tomar esta aproximación se llama ergodicidad, que establece que “los promedios temporales convergen al valor que se pretende estimar”. Por ello, un proceso ergódico debe ser estacionario, dado que sería imposible estimar una f.d.p. variante en el tiempo a partir de una única realización. En los estudios siguientes se examinan las propiedades de las señales de los tres procesos aleatorios siguientes determinados por las siguientes funciones: function v=rp1(M,N) % Proceso aleatorio número 1. A=0.02; B=5; Mc=ones(M,1)*B*sin((1:N)*pi/N); Ac=A*ones(M,1)*[1:N]; v=(rand(M,N)-0.5).*Mc+Ac; function v=rp2(M,N) %Proceso aleatorio número 2. Ar=rand(M,1)*ones(1,N); Mr=rand(M,1)*ones(1,N); v=(rand(M,N)-0.5).*Mr+Ar; Curso 2008 / 2009 8 Señales y Sistemas II function v=rp3(M,N) Práctica 2: Estimación %Proceso aleatorio número 3. A=0.5; M=3; v=(rand(M,N)-0.5)*M+A; Como se puede apreciar, es recomendable realizar cada función (proceso aleatorio) en un script de MATLAB, de tal forma que se cree una matriz de tamaño [MxN] que contenga números aleatorios. Estudio 2.1.: ¿Proceso estacionario o ergódico? Para este estudio, genere diferentes realizaciones de los tres procesos en el dominio del tiempo, para obtener una idea aproximada de la estacionariedad y de la ergodicidad. Para la estacionariedad, la clave está en comprobar si ciertas propiedades cambian o no con el tiempo; para la ergodicidad, la clave está en comprobar si una única realización del proceso estacionario representa al proceso completo. Por todo ello, genere cuatro realizaciones de cada uno de los procesos de longitud 100 (M=4, N=100) y represente cada uno de ellos en una misma figura utilizando la función subplot(…). A partir de esta representación indique si estos procesos pueden ser ergódicos y/o estacionarios. Estudio 2.2.: Esperanzas a partir de promedios de conjuntos Para este estudio, genere un conjunto de realizaciones de los tres procesos, por ejemplo con M=80 (número de procesos) y N=100 (número de elementos de cada proceso). Utilice las funciones de MATLAB mean(…) y std(…) para estimar la media y la desviación típica de estos procesos en cada instante de tiempo. El resultado de la estimación debe ser una función del tiempo, que debe representar, y decidir a partir de dicha representación si los procesos pueden ser estacionarios en sentido amplio. Nota: El promedio del conjunto, en el caso de la función mean(…), es: Curso 2008 / 2009 9 Señales y Sistemas II Práctica 2: Estimación mˆ un [ n ] = 1 M ∑ uλ [n] ≈ E {un } M λ=1 (9) De forma parecida, para el promedio de conjunto de la varianza, debemos calcular la suma de los cuadrados después de eliminar la media, es decir: € M 2 1 2 ˆ σ u n = ∑ ( uλ [ n ] − mˆ u n [ n ]) M λ=1 (10) € Estudio 2.3.: Esperanzas a partir de promedios temporales Obtenga, de forma aproximada, la media de cada proceso como promedios temporales para cuatro realizaciones ( λ = 1,2,3,4 ) de cada proceso, es decir: uλ = 1 N −1 ∑ uλ [n] N n= 0 € uλ − uλ 2 1 N −1 = ∑ uλ [ n ] − uλ [ n ] N n= 0 ( ) (11) 2 Para ello, utilice M=4 y N=1000 cuando genere las señales. A raíz de los resultados obtenidos, indique si los procesos son ergódicos o no. € NOTA: Hablando estrictamente, los promedios temporales necesitan el límite cuando N tiende a infinito, pero podemos aproximar el valor en el límite considerando longitudes suficientemente grandes, N=1000. Un proceso no estacionario no puede ser ergódico, por ello en esos casos no son útiles los promedios temporales. ESTUDIO 3: SISTEMAS LINEALES CON ENTRADAS ALEATORIAS En los siguientes ejercicios estudiaremos tres sistemas lineales diferentes que actúan como filtros y su efecto en el procesado de señales aleatorias de entrada, generadas por medio de las funciones rand(…) y randn(…). Los sistemas lineales comentados anteriormente se describen por medio de los coeficientes de sus funciones de transferencia, las cuales son funciones racionales (cociente de polinomios en Z). De este modo, los coeficientes de los tres sistemas lineales (filtros) con los que vamos a trabajar son: Curso 2008 / 2009 10 Señales y Sistemas II Práctica 2: Estimación Filtro 1: B1=[0.3 0]; A1=[1 -0.8]; Filtro 2: B2=0.06*[1 2 1]; A2=[1 -1.3 0.845]; Filtro 3: B3=[0.845 -1.3 1]; A3=fliplr(B3); %filtro paso todo. Para implementar estos filtros en MATLAB se puede hacer uso de la función filter(…), así como obtener la salida del proceso dada una entrada y los coeficientes del filtro. Además, la función freqz(…) se puede utilizar para obtener muestras de la respuesta en frecuencia de los filtros. La estimación de la secuencia de autocorrelación y de la correlación cruzada puede obtenerse con la función de MATLAB xcorr(…). Mientras que la densidad espectral de potencia puede calcularse, de forma aproximada, como la FFT de la secuencia de autocorrelación medida, para lo cual podemos hacer uso de la función fft(…) de MATLAB. Estudio 3.1.: Autocorrelación de un proceso de ruido blanco Las funciones rand(…) y randn(…) producen valores que son estadísticamente independientes. Genere segmentos de dos secuencias aleatorias de entrada por medio de: N=5000; v1=sqrt(12)*(rand(1,N)-0.5); %proceso de media nula. v2=randn(1,N); %proceso gaussiano de media nula y varianza 1. Curso 2008 / 2009 11 Señales y Sistemas II Práctica 2: Estimación Llame a estas señales v1[n] y v2[n]. Determine la varianza de v1[n]. Calcule y represente 64 valores de sus secuencias de autocorrelación utilizando xcorr(…). ¿Cómo se aproxima la secuencia de autocorrelación obtenida a la teórica esperada?. Estudio 3.2.: Ruido Blanco Filtrado Las señales v1[n] y v2[n] generadas en el anterior estudio serán utilizadas como entradas a un filtro de primer orden. Para ello: 1. Suponga que la respuesta al impulso del filtro es h[n]=b an u[n], donde |a|<1. Deduzca teóricamente la función de autocorrelación y calcule entonces las secuencias de autocorrelación de las salidas correspondientes a ambas entradas v1[n] y v2[n], si el filtro considerado es el filtro 1, y a=0.8 y b=0.3. Compare estos resultados con los calculados de forma teórica y explique cualquier diferencia significativa. 2. Estime la f.d.p. de la salida cuando a la entrada tenemos la secuencia, de distribución uniforme, v1[n]. Repita la estimación anterior si la entrada es gaussiana, v2[n]. Explique por qué ambas funciones de densidad de probabilidad son prácticamente iguales. 3. Repita el primer apartado para el filtro paso todo (filtro 3) de primer orden mostrado al comienzo de este estudio. Deduzca la secuencia de autocorrelación teórica, de forma que el resultado sea aplicable a un filtro paso‐todo con cualquier número de polos. ¿Se espera alguna diferencia para las dos señales de entrada?. Estudio 3.3.: Medida de la autocorrelación El estudio que desarrollaremos a continuación pretende demostrar el efecto de un filtro cualquiera sobre la secuencia de autocorrelación. Para ello: 1. Excite el filtro 2 con las dos señales de ruido blanco v1[n] y v2[n]. Llame a sus salidas correspondientes y21[n] e y22[n]. 2. Calcule y represente el histograma de ambas secuencias de salida y2i[n]. Tenga cuidado de utilizar sólo los datos de la parte estacionaria de las señales. Explique Curso 2008 / 2009 12 Señales y Sistemas II Práctica 2: Estimación cómo la respuesta al impulso h2[n] puede utilizarse para estimar la longitud del transitorio. 3. Obtenga la secuencia de autocorrelación de la parte estacionaria de las dos secuencias de salida y21[n] e y22[n]. Represente las secuencias de autocorrelación de las señales de entrada y las de salida en un gráfico cuádruple utilizando la función subplot(…). 4. Obtenga las varianzas de las cuatro señales (dos entradas y dos salidas) y compárelas con los resultados teóricos. 5. Excite el filtro 3 con v1[n] y v2[n]. Obtenga la secuencia de autocorrelación y los histogramas de las dos secuencias de salida y31[n] e y32[n]. Represente los resultados siguiente un procedimiento como el presentado para el caso anterior y explique las similitudes y diferencias entre ellas. Curso 2008 / 2009 13