You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3.0 KiB

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.


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].


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:


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:


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.


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:


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:


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:


pip install numpy scipy matplotlib


¿Querés que este resumen lo exporte directamente a un archivo .docx listo para descargar?