Comienzo del desarrollo de la justificacion de seleccion de orden

master
Bruno Berlatzky 3 weeks ago
parent f23b2df2dd
commit 1279b8ab7c

@ -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",

@ -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?

@ -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
Loading…
Cancel
Save