47 lines
1.7 KiB
Python
47 lines
1.7 KiB
Python
|
|
import pandas as pd
|
||
|
|
import numpy as np
|
||
|
|
|
||
|
|
df = pd.read_csv("data.csv")
|
||
|
|
df["time_s"] = df["time since start [ms]"] / 1000.0
|
||
|
|
|
||
|
|
t = df["time_s"].values
|
||
|
|
T = df["temp_amb IR [C]"].values
|
||
|
|
|
||
|
|
# Media ponderata sul tempo con regola dei trapezi
|
||
|
|
# T_avg = integral(T dt) / (t_fine - t_inizio)
|
||
|
|
integral = np.trapezoid(T, t)
|
||
|
|
durata = t[-1] - t[0]
|
||
|
|
t_media = integral / durata
|
||
|
|
|
||
|
|
t_min = T.min()
|
||
|
|
t_max = T.max()
|
||
|
|
t_inizio = t[0]
|
||
|
|
t_fine = t[-1]
|
||
|
|
n_campioni = len(df)
|
||
|
|
|
||
|
|
print(f"Finestra di osservazione: {t_inizio:.1f} s → {t_fine:.1f} s ({durata:.1f} s)")
|
||
|
|
print(f"Campioni: {n_campioni}")
|
||
|
|
print(f"T ambiente min: {t_min:.2f} °C")
|
||
|
|
print(f"T ambiente max: {t_max:.2f} °C")
|
||
|
|
print(f"T ambiente media ponderata: {t_media:.2f} °C")
|
||
|
|
|
||
|
|
with open("report.md", "w", encoding="utf-8") as f:
|
||
|
|
f.write("# Report: Temperatura Ambiente Media\n\n")
|
||
|
|
f.write("## Metodologia\n\n")
|
||
|
|
f.write("La media è calcolata come **media ponderata sul tempo** (regola dei trapezi):\n\n")
|
||
|
|
f.write("$$T_{avg} = \\frac{\\int T(t)\\, dt}{t_{fine} - t_{inizio}}$$\n\n")
|
||
|
|
f.write("Questo approccio tiene conto del campionamento non uniforme: ")
|
||
|
|
f.write("ogni campione pesa proporzionalmente all'intervallo di tempo che copre.\n\n")
|
||
|
|
f.write("## Risultati\n\n")
|
||
|
|
f.write(f"| Parametro | Valore |\n")
|
||
|
|
f.write(f"|---|---|\n")
|
||
|
|
f.write(f"| Inizio osservazione | {t_inizio:.1f} s |\n")
|
||
|
|
f.write(f"| Fine osservazione | {t_fine:.1f} s |\n")
|
||
|
|
f.write(f"| Durata totale | {durata:.1f} s |\n")
|
||
|
|
f.write(f"| Numero campioni | {n_campioni} |\n")
|
||
|
|
f.write(f"| T ambiente minima | {t_min:.2f} °C |\n")
|
||
|
|
f.write(f"| T ambiente massima | {t_max:.2f} °C |\n")
|
||
|
|
f.write(f"| **T ambiente media ponderata** | **{t_media:.2f} °C** |\n")
|
||
|
|
|
||
|
|
print("\nreport.md generato.")
|