Files
Microtracking/test_fitconcorrecion.py

93 lines
3.6 KiB
Python

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# --- Datos de los 32 puntos ---
data = [
("2025-09-10 11:02", 25701, 110, 76.4455, 82.8004),
("2025-09-10 11:07", 25888, 100, 78.0679, 83.8130),
("2025-09-10 11:18", 29082, 100, 81.6084, 85.8667),
("2025-09-10 11:23", 28925, 2268, 83.6576, 86.8695),
("2025-09-10 11:25", 28825, 2368, 84.5224, 87.2927),
("2025-09-10 11:35", 31377, 7303, 88.4720, 88.9386),
("2025-09-10 12:46", 44400, 28950,135.9374, 96.0041),
("2025-09-10 13:20", 48800, 46575,162.9381, 94.0012),
("2025-09-10 13:41", 51556, 48864,175.5298, 91.3748),
("2025-09-10 13:50", 56000, 52000,180.0000, 90.0000),
("2025-09-10 13:51", 56150, 52000,180.5351, 89.8091),
("2025-09-10 13:55", 58600, 56300,182.5981, 89.0732),
("2025-09-10 13:58", 59200, 57650,183.9786, 88.5807),
("2025-09-10 14:00", 58600, 57350,184.5990, 88.3594),
("2025-09-10 14:05", 59882, 57650,186.5288, 87.4463),
("2025-09-10 14:08", 59882, 57650,187.7597, 86.8639),
("2025-09-10 14:14", 60782, 64141,190.1318, 85.7416),
("2025-09-10 14:16", 62796, 64955,190.7264, 85.4112),
("2025-09-10 14:17", 63396, 64505,191.2917, 85.0662),
("2025-09-10 14:23", 63509, 67269,193.2224, 83.8876),
("2025-09-10 14:24", 61861, 67055,193.4570, 83.7444),
("2025-09-10 14:59", 71009, 81607,202.5291, 76.6163),
("2025-09-10 15:14", 73686, 86037,205.5586, 73.3798),
("2025-09-10 15:20", 74695, 90038,206.6519, 72.0440),
("2025-09-10 15:22", 74695, 92138,207.0994, 71.4884),
("2025-09-10 15:26", 75295, 93338,207.7590, 70.6695),
("2025-09-10 15:30", 75895, 94388,208.3731, 69.9010),
("2025-09-10 15:33", 76495, 94988,208.8766, 69.1863),
("2025-09-10 15:35", 76795, 95438,209.2280, 68.6875),
("2025-09-10 15:38", 77395, 97238,209.7314, 67.9729),
("2025-09-10 15:42", 77545, 97238,210.2297, 67.2656),
("2025-09-10 15:47", 77737, 99354,211.1104, 65.9497),
]
df = pd.DataFrame(data, columns=["Timestamp","X","Y","Az_corr","Alt_corr"])
df["Zen_corr"] = 90 - df["Alt_corr"]
# --- Coefs eje X ---
a_x, b_x, c_x = 505.15, 309.41, 957.95
df["X_fit"] = a_x*df["Zen_corr"] + b_x*df["Az_corr"] + c_x
# --- Coefs eje Y (cúbico en Az) ---
a1, a2, a3, b, c = 4006.56, -21.86, 0.0428, 1480.15, -209162
df["Y_fit"] = (a1*df["Az_corr"] + a2*df["Az_corr"]**2 +
a3*df["Az_corr"]**3 + b*df["Zen_corr"] + c)
# Convertir Timestamp a hora decimal
df["Hora_decimal"] = pd.to_datetime(df["Timestamp"]).dt.hour \
+ pd.to_datetime(df["Timestamp"]).dt.minute/60 \
+ pd.to_datetime(df["Timestamp"]).dt.second/3600
# --- Gráfico X vs hora decimal ---
plt.figure(figsize=(12,5))
plt.plot(df["Hora_decimal"], df["X"], "o-", label="X_real")
plt.plot(df["Hora_decimal"], df["X_fit"], "s--", label="X_fit")
plt.xlabel("Hora decimal")
plt.ylabel("X (pasos)")
plt.title("Comparación X real vs modelo")
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.show()
# --- Gráfico Y vs hora decimal ---
plt.figure(figsize=(12,5))
plt.plot(df["Hora_decimal"], df["Y"], "o-", label="Y_real")
plt.plot(df["Hora_decimal"], df["Y_fit"], "s--", label="Y_fit")
plt.xlabel("Hora decimal")
plt.ylabel("Y (pasos)")
plt.title("Comparación Y real vs modelo")
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.show()
# --- Gráfico XY trayectoria ---
plt.figure(figsize=(8,8))
plt.plot(df["X"], df["Y"], "o-", label="Trayectoria real")
plt.plot(df["X_fit"], df["Y_fit"], "s--", label="Trayectoria modelo")
plt.xlabel("X (pasos)")
plt.ylabel("Y (pasos)")
plt.title("Trayectoria XY: Real vs Modelo")
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.show()