{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "gzOG5K5pP1o_" }, "source": [ "# Entrega 1 - Estimación y Predicción en Series Temporales 2021\n", "\n", "Se asume que toda estudiante asiste a este curso por un propósito serio y se espera que sea un individuo responsable que se auto-exija altos estándares de honestidad y conducta personal. Copiar, plagiar, la colaboración no autorizada, la interferencia deliberada con la integridad del trabajo ajeno, la fabricación o falsificación de datos, o cualquier otra forma de deshonestidad académica son consideradas ofensas serias para las cuales pueden imponerse sanciones disciplinarias.\n", " \n", " ### Temas:\n", "+ Procesos autorregresivos\n", "+ Modelos auto-regressive-moving-average (ARMA)\n", "+ Filtro de Wiener\n", "\n", "\n", "**Esta entrega consiste en una serie de ejercicios analíticos y de implementación.**\n", "\n", "Las deducciones y pruebas de las partes analíticas pueden ser realizadas en papel (no es necesario escribirlas en LaTex). Se solicita cargar una foto de los desarrollos teóricos en la carpeta de la entrega (debe ser legible), con el nombre correspondiente a la parte que se esté respondiendo (P.Ej: '2.3.a.png'). \n", "A aquellos estudiantes que entreguen los desarrollos teóricos en LaTex se les sumarán 5 puntos." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "81cuhsCzP1po" }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np" ] }, { "cell_type": "markdown", "metadata": { "id": "s4JOIUh1P1pp" }, "source": [ "## Ejercicio 1 (50pts)" ] }, { "cell_type": "markdown", "metadata": { "id": "wDBciSB6P1pp" }, "source": [ "Considerar un proceso autorregresivo dado por\n", "\n", "$$ x[n] = w_1 x[n-1] + w_2 x[n-2] + b v[n]$$\n", "\n", "donde $v[n] \\sim \\mathcal{N}(0,1)$ i.i.d. Se trabajará con $N=1000$ muestras de $x[n]$ generadas empleando los valores de los coeficientes $w_1 = 0, w_2 = -0.81 \\text{ y } b=1$." ] }, { "cell_type": "markdown", "metadata": { "id": "hPQjUqXpP1pp" }, "source": [ "**P1.1.** Calcular analíticamente la autocorrelación y la densidad espectral de potencia del proceso. " ] }, { "cell_type": "markdown", "metadata": { "id": "vpPD2DsCP1pq" }, "source": [ "

Respuesta P1.1

\n", "\n", "[Inserte aquí su respuesta]\n", "\n", "
\n" ] }, { "cell_type": "markdown", "metadata": { "id": "ExVLHw8mP1pq" }, "source": [ "**P1.2.** Estimar la autocorrelación utilizando la autocorrelación muestral y compararla gráficamente con la autocorrelación verdadera. " ] }, { "cell_type": "markdown", "metadata": { "id": "21PEcmimP1pq" }, "source": [ "

Respuesta P1.2

\n", "\n", "[Inserte aquí su respuesta]\n", "\n", "
\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "NipMdo-EP1pr" }, "outputs": [], "source": [ "# codigo" ] }, { "cell_type": "markdown", "metadata": { "id": "SfbFnLAhP1pr" }, "source": [ "**P1.3.** Estimar la densidad espectral de potencia _empírica_ (PSD) de $x[n]$ usando la autocorrelación empírica (promedios muestrales) y compararla gráficamente con la verdadera. " ] }, { "cell_type": "markdown", "metadata": { "id": "8Qgs4jkRP1ps" }, "source": [ "

Respuesta P1.3

\n", "\n", "[Inserte aquí su respuesta]\n", "\n", "
\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "oWdBXdUSP1ps" }, "outputs": [], "source": [ "# codigo" ] }, { "cell_type": "markdown", "metadata": { "id": "-FV9UV8-P1pt" }, "source": [ "**P1.4.** Asumiendo que $\\mathbf{x}$ es una realización de un proceso AR(2), estime los parámetros $w_1$, $w_2$ y $b$ de dicho modelo a partir de la autocorrelación muestral. " ] }, { "cell_type": "markdown", "metadata": { "id": "WeSM2YfMP1pt" }, "source": [ "

Respuesta P1.4

\n", "\n", "[Inserte aquí su respuesta]\n", "\n", "
\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "dzrTTzbxP1pt" }, "outputs": [], "source": [ "# codigo" ] }, { "cell_type": "markdown", "metadata": { "id": "6qVmqm5JP1pu" }, "source": [ "**P1.5.** Calcule la PSD correspondiente a los parámetros estimados en la parte anterior y compárela gráficamente (simultáneamente) con i) la PSD verdadera y ii) la PSD empírica obtenida a partir de la autocorrelación muestral. " ] }, { "cell_type": "markdown", "metadata": { "id": "HsNgg1bpP1pu" }, "source": [ "

Respuesta P1.5

\n", "\n", "[Inserte aquí su respuesta]\n", "\n", "
\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "NYfrB6fBP1pu" }, "outputs": [], "source": [ "# codigo" ] }, { "cell_type": "markdown", "metadata": { "id": "JJ2p4Q-oP1pv" }, "source": [ "## Ejercicio 2 (50pts)" ] }, { "cell_type": "markdown", "metadata": { "id": "ulLaEtUVP1pv" }, "source": [ "Este ejercicio está basado en el ejemplo presentado en la sección 5.6 del libro *Adaptive Filter Theory* de S. Haykin (3era ed.). Sea $d[n]$ un AR(1) dado por la siguiente ecuación en recurrencia\n", "$$d[n]+ad[n-1]=v_1[n],$$\n", "donde $a$=0.8458 y $v_1$ es ruido blanco de media nula y varianza $\\sigma^2_1=0.27$.\n", "\n", "La señal $d[n]$ se transmite por un canal que primero atenúa la señal $d[n]$ según la siguiente función de transferencia, \n", "\n", "$$H_c(z)=\\frac{1}{1-bz^{-1}},$$\n", "\n", "donde $b=0.9458$, y luego agrega ruido blanco aditivo $v_2[n]$ de media nula y varianza $\\sigma^2_2=0.1$. Si llamamos $x[n]$ a la salida de la etapa de atenuación previa (antes del ruido), tenemos que la salida final (luego de agregar el ruido) es:\n", "\n", "$$y[n]=x[n]+v_2[n].$$\n", "\n", "La idea es utilizar un filtro de Wiener de orden 3 para intentar recuperar la señal $d[n]$ a partir de la señal recibida $y[n]$. Llamaremos $\\hat{d}[n]$ a la salida de dicho filtro.\n", "\n", "**P2.1**\n", "\n", "    a) Diseñar un filtro de Wiener de orden $3$ para recuperar la señal transmitida indicando el valor de los coeficientes obtenidos.
\n", "    b) Reporte el error cuadrático medio mínimo $J_{min}$ obtenido analíticamente al hallar los coeficientes.
\n", "    c) Simule y grafique simultáneamente: $d[n],\\,x[n],\\,y[n],\\,\\hat{d}[n]$
\n", "    d) Calcule el error cuadrático obtenido empíricamente en base a las muestras:\n", " $$J = \\frac{1}{N}\\sum_{i=1}^{N}(d[n]-\\hat{d}[n])^2.$$\n", "    e) Compare y comente sus resultados.\n" ] }, { "cell_type": "markdown", "metadata": { "id": "emMmm3YNP1pw" }, "source": [] }, { "cell_type": "markdown", "metadata": { "id": "EgqBqlcZP1pw" }, "source": [ "

Respuesta P2.1.a

\n", "\n", "[Inserte aquí su respuesta]\n", "\n", "
\n" ] }, { "cell_type": "markdown", "metadata": { "id": "OYrok6TrP1pw" }, "source": [ "

Respuesta P2.1.b

\n", "\n", "[Inserte aquí su respuesta]\n", "\n", "
\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "VcUPEeTGP1px" }, "outputs": [], "source": [ "#\n", "# Código parte P2.1.c\n", "#" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#\n", "# Código parte P2.1.d\n", "#" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Respuesta P2.1.e

\n", "\n", "[Inserte aquí su respuesta]\n", "\n", "
\n" ] }, { "cell_type": "markdown", "metadata": { "id": "QuFOBs79P1pz" }, "source": [ "Ahora vamos a analizar las señales involucradas en la transmisión anterior desde el punto de vista del análisis frecuencial.\n", "\n", "**P2.2** \n", "    a) Graficar la respuesta en frencuencia del canal junto con la del filtro de Wiener. \n", "    b) Graficar la respuesta en frecuencia de la cascada de ambos. \n", "    c) Graficar la densidad espectral de potencia de la señal $d[n]$ \n", "    d) Graficar la densidad espectral de potencia de la señal $x[n]$ \n", "    e) Interpretar el funcionamiento de los filtros en el dominio de la frecuencia. " ] }, { "cell_type": "markdown", "metadata": { "id": "jUoh1zGPP1pz" }, "source": [ "

Respuesta P2.2.a

\n", "\n", "[Inserte aquí su respuesta]\n", "\n", "
\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "5JfjCZTBP1pz" }, "outputs": [], "source": [ "# Codigo" ] }, { "cell_type": "markdown", "metadata": { "id": "h4DIwctRP1p0" }, "source": [ "

Respuesta P2.2.b

\n", "\n", "[Inserte aquí su respuesta]\n", "\n", "
\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "c_QmQQ1yP1p0" }, "outputs": [], "source": [ "# Codigo" ] }, { "cell_type": "markdown", "metadata": { "id": "vwFHV4InP1p3" }, "source": [ "

Respuesta P2.2.c

\n", "\n", "[Inserte aquí su respuesta]\n", "\n", "
\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "tFmAW3q0P1p3" }, "outputs": [], "source": [ "# Codigo" ] }, { "cell_type": "markdown", "metadata": { "id": "7RzakBHnP1p4" }, "source": [ "

Respuesta P2.2.d

\n", "\n", "[Inserte aquí su respuesta]\n", "\n", "
\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "fEQ0mLfdP1p5" }, "outputs": [], "source": [ "# Codigo" ] }, { "cell_type": "markdown", "metadata": { "id": "T4M4N-umP1p5" }, "source": [ "

Respuesta P2.2.e

\n", "\n", "[Inserte aquí su respuesta]\n", "\n", "
\n" ] }, { "cell_type": "markdown", "metadata": { "id": "b0BQbespP1p5" }, "source": [ "**P2.3** \n", "    a) Recalcular el filtro de Wiener para el caso en que no hay ruido aditivo ($\\sigma^2_2=0$). \n", "    b) Graficar la respuesta en frecuencia del canal junto con la del filtro de Wiener. \n", "    c) Graficar la respuesta en frecuencia de la cascada de ambos. \n", "    d) Interpretar el resultado. \n" ] }, { "cell_type": "markdown", "metadata": { "id": "ydKzLVMpP1p6" }, "source": [ "

Respuesta P2.3.a

\n", "\n", "[Inserte aquí su respuesta]\n", "\n", "
\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "7sGolLOdP1p6" }, "outputs": [], "source": [ "# Codigo" ] }, { "cell_type": "markdown", "metadata": { "id": "TROLL0AUP1p6" }, "source": [ "

Respuesta P2.3.b

\n", "\n", "[Inserte aquí su respuesta]\n", "\n", "
\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "--GDolvBP1p7" }, "outputs": [], "source": [ "# Codigo" ] }, { "cell_type": "markdown", "metadata": { "id": "5luiqp2UP1p8" }, "source": [ "

Respuesta P2.3.c

\n", "\n", "[Inserte aquí su respuesta]\n", "\n", "
\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "wljdndVCP1p8" }, "outputs": [], "source": [ "# Codigo" ] }, { "cell_type": "markdown", "metadata": { "id": "4GMqjRMsP1p8" }, "source": [ "

Respuesta P2.3.d

\n", "\n", "[Inserte aquí su respuesta]\n", "\n", "
\n" ] }, { "cell_type": "markdown", "metadata": { "id": "0SaIqixLP1p8" }, "source": [ "

Respuesta P2.3.e

\n", "\n", "[Inserte aquí su respuesta]\n", "\n", "
\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "Ich3zJg5P1p9" }, "outputs": [], "source": [ "# Codigo" ] }, { "cell_type": "markdown", "metadata": { "id": "9Qu1rXkKP1p9" }, "source": [ "

Respuesta P2.3.f

\n", "\n", "[Inserte aquí su respuesta]\n", "\n", "
\n" ] } ], "metadata": { "colab": { "name": "E3letra.ipynb", "provenance": [] }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.6" } }, "nbformat": 4, "nbformat_minor": 1 }