From 1279b8ab7cf84c289641879de99629c5e578b7b8 Mon Sep 17 00:00:00 2001 From: Bruno Berlatzky Date: Fri, 22 Aug 2025 12:54:44 -0300 Subject: [PATCH] Comienzo del desarrollo de la justificacion de seleccion de orden --- .../.obsidian/workspace.json | 76 +++++- .../Tesis De Grado Berlatzky/Auxiliar.md | 227 ++++++++++++++++++ .../Simulaciones/Estimador de Orden.md | 49 ++++ 3 files changed, 339 insertions(+), 13 deletions(-) create mode 100644 BovedasObsidian/Tesis De Grado Berlatzky/Auxiliar.md create mode 100644 BovedasObsidian/Tesis De Grado Berlatzky/Simulaciones/Estimador de Orden.md diff --git a/BovedasObsidian/Tesis De Grado Berlatzky/.obsidian/workspace.json b/BovedasObsidian/Tesis De Grado Berlatzky/.obsidian/workspace.json index b6cf6b0..8d75443 100644 --- a/BovedasObsidian/Tesis De Grado Berlatzky/.obsidian/workspace.json +++ b/BovedasObsidian/Tesis De Grado Berlatzky/.obsidian/workspace.json @@ -8,16 +8,65 @@ "type": "tabs", "children": [ { - "id": "75db4095789741bb", + "id": "98c317090ba61861", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "Duda que surge de escribir la primera simulación.md", + "mode": "source", + "source": false + }, + "icon": "lucide-file", + "title": "Duda que surge de escribir la primera simulación" + } + }, + { + "id": "e5e9e711456b156b", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "Simulaciones/Estimador de Orden.md", + "mode": "source", + "source": false + }, + "icon": "lucide-file", + "title": "Estimador de Orden" + } + }, + { + "id": "167a39b8463abf84", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "Auxiliar.md", + "mode": "source", + "source": false + }, + "icon": "lucide-file", + "title": "Auxiliar" + } + } + ], + "currentTab": 1 + }, + { + "id": "0ffb8009f13bb072", + "type": "tabs", + "children": [ + { + "id": "eca72ef88f0e0261", "type": "leaf", "state": { "type": "pdf", "state": { "file": "Materiales/Adicionales/[Stoica_P.,_Moses_R.L.]_Spectral_analysis_of_signa(b-ok.xyz).pdf", - "page": 414, - "left": -7, - "top": 315, - "zoom": 2.274846789235279 + "page": 428, + "left": -12, + "top": 562, + "zoom": 1.2390087929656275 }, "icon": "lucide-file-text", "title": "[Stoica_P.,_Moses_R.L.]_Spectral_analysis_of_signa(b-ok.xyz)" @@ -173,22 +222,23 @@ "pdf-plus:PDF++: Toggle auto-paste": false } }, - "active": "75db4095789741bb", + "active": "e5e9e711456b156b", "lastOpenFiles": [ - "Materiales/Adicionales/EstimacionEspectral.pdf", + "Materiales/Adicionales/[Stoica_P.,_Moses_R.L.]_Spectral_analysis_of_signa(b-ok.xyz).pdf", + "Simulaciones/Estimador de Orden.md", + "Auxiliar.md", "Duda que surge de escribir la primera simulación.md", - "Duda sobre la explicación sobre los métodos parametricos.md", - "Notas de apendice del Stoica.md", - "Notas de la reunión con Cecilia del 30-05-2025.md", + "Preguntas.md", "Notas del libro Spectral analisis of signals de Stoica.md", "Posible objetivo de la tesis.md", - "Preguntas.md", + "Notas de la reunión con Cecilia del 30-05-2025.md", + "Notas de apendice del Stoica.md", + "Duda sobre la explicación sobre los métodos parametricos.md", + "Materiales/Adicionales/EstimacionEspectral.pdf", "Resumen de ambiental.md", "Auxiliar.md", - "Materiales/Adicionales/[Stoica_P.,_Moses_R.L.]_Spectral_analysis_of_signa(b-ok.xyz).pdf", "Untitled 1.md", "Preguntas de final posibles.md", - "Untitled.md", "Materiales/Adicionales/Merrill Ivan Skolnik - Introduction to Radar Systems-Mcgraw-Hill College (1980).pdf", "Materiales/Adicionales/sensors-14-02595.pdf", "Materiales/TesisDeReferencia/VanderPlas_2018_ApJS_236_16.pdf", diff --git a/BovedasObsidian/Tesis De Grado Berlatzky/Auxiliar.md b/BovedasObsidian/Tesis De Grado Berlatzky/Auxiliar.md new file mode 100644 index 0000000..db15bd1 --- /dev/null +++ b/BovedasObsidian/Tesis De Grado Berlatzky/Auxiliar.md @@ -0,0 +1,227 @@ +## 1. 📄 Resumen: Ajuste No Lineal de Señales por Mínimos Cuadrados en Python + + + +Este código realiza un ajuste por mínimos cuadrados no lineales para estimar los parámetros de una señal compuesta por una suma de funciones coseno. El modelo de señal es: + + + +$$ + +x(t) = \sum_{i=0}^{N} \alpha_i \cdot \cos(\omega_i t + \phi_i) + +$$ + + + +donde los parámetros $\alpha_i$ (amplitud), $\omega_i$ (frecuencia) y $\phi_i$ (fase) son desconocidos y deben ser estimados. + + + +--- + + + +### 1.1. 🔧 Objetivo + + + +A partir de una muestra de la señal $x(t)$, recuperar los parámetros de cada coseno usando mínimos cuadrados no lineales con `scipy.optimize.curve_fit`. + + + +--- + + + +### 1.2. 🧱 Estructura del Código + + + +**1. Definición de parámetros verdaderos** + + + +Se definen las amplitudes, frecuencias y fases de la señal original que queremos simular. + + + +```python + +alpha_true = [2.0, 1.5, 1.0] + +omega_true = [1.5, 3.2, 5.0] + +phi_true = [0.1, -0.5, 1.2] + +``` + + + +**2. Generación de la malla temporal** + + + +Se crean $n$ muestras en el intervalo $[0, 2\pi]$. + + + +```python + +t = np.linspace(0, 2*np.pi, n_muestras) + +``` + + + +**3. Generación de la señal** + + + +Se suma cada coseno con sus parámetros reales: + + + +```python + +x(t) = \sum \alpha_i \cdot \cos(\omega_i t + \phi_i) + +``` + + + +**4. Modelo para ajuste** + + + +Se define una función que toma un vector plano de parámetros y devuelve la señal modelada: + + + +```python + +def modelo(t, *params): + +    for i in range(0, len(params), 3): + +        a = params[i] + +        w = params[i+1] + +        p = params[i+2] + +        x += a * np.cos(w * t + p) + +``` + + + +**5. Inicialización de parámetros** + + + +Se eligen valores iniciales para los parámetros del modelo. + + + +```python + +params_iniciales = [1.0, 2.0, 0.0, 1.0, 3.0, 0.0, 1.0, 4.0, 0.0] + +``` + + + +**6. Ajuste con `curve_fit`** + + + +Se aplica el método de mínimos cuadrados no lineales: + + + +```python + +popt, _ = curve_fit(modelo, t, x, p0=params_iniciales) + +``` + + + +**7. Extracción de parámetros estimados** + + + +Los parámetros ajustados se separan en amplitudes, frecuencias y fases: + + + +```python + +alpha_est = popt[::3] + +omega_est = popt[1::3] + +phi_est = popt[2::3] + +``` + + + +**8. Comparación de resultados** + + + +Se imprime la comparación entre parámetros reales y estimados. + + + +**9. Gráfico de validación** + + + +Se grafican las señales original y ajustada para visualizar la calidad del ajuste. + + + +--- + + + +### 1.3. ✅ Conclusiones + + + +* Este método permite ajustar señales compuestas por cosenos sin necesidad de conocer las frecuencias de antemano. + +* La clave es usar un modelo no lineal y una buena inicialización. + +* El ajuste es preciso si los datos no tienen mucho ruido y las condiciones iniciales son razonables. + + + +--- + + + +### 1.4. 📚 Requisitos + + + +Este código requiere las siguientes bibliotecas de Python: + + + +```bash + +pip install numpy scipy matplotlib + +``` + + + +--- + + + +¿Querés que este resumen lo exporte directamente a un archivo `.docx` listo para descargar? \ No newline at end of file diff --git a/BovedasObsidian/Tesis De Grado Berlatzky/Simulaciones/Estimador de Orden.md b/BovedasObsidian/Tesis De Grado Berlatzky/Simulaciones/Estimador de Orden.md new file mode 100644 index 0000000..56742dc --- /dev/null +++ b/BovedasObsidian/Tesis De Grado Berlatzky/Simulaciones/Estimador de Orden.md @@ -0,0 +1,49 @@ +# Repaso teórico del libro de Stoica para los algoritmos de estimación de orden + + + + +# Marco teórico para el desarrollo del estimador de orden + +Para comenzar lo que hacemos es plantear el modelo que estamos proponiendo para las señales que estamos midiendo. Estamos proponiendo que las señales son de la forma: + +$$ + Y_j = \sum_{i=1}^{N}\left[ \alpha_i \hbox{ } cos(w_it_j + \phi_i) \right] + \varepsilon_j +$$ +Donde se tiene que: + - $M_j$ representa la muestra $j$ del vector de las muestras tomadas de la señal de interés. + - La constante $\alpha_i$ es la amplitud del coseno $i$ que compone a la señal. + - La constante $w_i$ es la frecuencia del coseno $i$ que compone a la señal. + - La constante $\phi_i$ es la fase del coseno $i$ que compone a la señal. + - $\varepsilon_j$ es el error gaussiano que esta presente en la muestra $j$ del vector de muestras. + +En el modelo que estamos proponiendo para los vectores muestreados que la función es la suma de una cantidad indefinida de cosenos, en donde cada uno tiene su amplitud, su frecuencia y su fase, y la suma de ruido gaussiano. Planteando esto podemos plantear la distribución de cada uno de los puntos del vector. Planteando esto obtenemos que: + +$$ + Y_j \sim N\left(\sum_{i=1}^{N}\left[ \alpha_i \hbox{ } cos(w_it_j + \phi_i) \right]\hbox{ }, \sigma² \right) +$$ +Entonces la función objetivo a maximizar es de la forma: +$$\Large + T + + = \prod_{j=i}^{n}\frac{1}{\sqrt{2\pi\sigma}} e^{-\frac{1}{2} \frac{\left(y_j-\sum_{i=1}^{N}\left[ \alpha_i \hbox{ } cos(w_it_j + \phi_i) \right]\right)²}{\sigma²}} +$$ +$$\Large + T + + = \left(\frac{1}{2\pi\sigma}\right)^{\frac{n}{2}} \prod_{j=i}^{n} e^{-\frac{1}{2} \frac{\left(y_j-\sum_{i=1}^{N}\left[ \alpha_i \hbox{ } cos(w_it_j + \phi_i) \right]\right)²}{\sigma²}} +$$ +$$\Large + T + + = \left(\frac{1}{2\pi\sigma}\right)^{\frac{n}{2}} e^{\sum_{j=i}^{n}\left[-\frac{1}{2} \frac{\left(y_j-\sum_{i=1}^{N}\left[ \alpha_i \hbox{ } cos(w_it_j + \phi_i) \right]\right)²}{\sigma²}\right]} +$$$$ + ln(T) = -\frac{n}{2}ln(2\pi\sigma) -\frac{1}{2} \sum_{j=i}^{n}\left[-\frac{1}{2} \frac{\left(y_j-\sum_{i=1}^{N}\left[ \alpha_i \hbox{ } cos(w_it_j + \phi_i) \right]\right)²}{\sigma²}\right] +$$ + + + + + + +# Explicación del estimador de orden \ No newline at end of file