Files

4.8 KiB
Raw Permalink Blame History

Panoramica

Cosa fa

fitseg prende la serie temporale di un sensore IR che si scalda e si raffredda (CSV t_ms,T_C,dT_C) e per ogni tratto del segnale trova l'equazione che lo descrive meglio. Il lavoro è in tre passi:

  1. Domini: divide il tempo in tratti omogenei (riposo, riscaldamento, raffreddamento).
  2. Equazioni: in ogni tratto fitta i modelli adatti con minimi quadrati non lineari e sceglie il migliore con una regola fissa.
  3. Sovrapposizione e report: confronta i dati grezzi con le equazioni trovate e scrive un report con grafici e formule.

Tutto è deterministico: stessi dati e stessa configurazione danno gli stessi risultati. Non c'è nessun modello linguistico né nessuna parte casuale.

Il segnale

Il sensore parte dalla temperatura ambiente (riposo). Poi il campione viene scaldato a gradini: la temperatura sale in una frazione di secondo (pochi campioni, riscaldamento) e subito dopo decade verso l'ambiente (raffreddamento). Con più gradini ravvicinati (2–4 s) il decadimento di ognuno è interrotto dal successivo; dopo l'ultimo gradino il raffreddamento prosegue fino all'ambiente.

Segnale del seed 7: i 7 domini, lo zoom sui gradini e la tabella dei risultati

Figura: dati reali di input/gen_7.csv (serie T_C, seed 7 di gen_data) con i domini riconosciuti da fitseg e le equazioni trovate. In alto il segnale completo, al centro lo zoom sui tre gradini, in basso la tabella che associa a ogni numero tipo, intervallo ed equazione. Il riscaldamento è rosso, il riposo grigio e ogni raffreddamento ha un colore diverso. Con 3 gradini i domini sono 1 + 2\cdot 3 = 7.

Il generatore dei dati di prova è il repository gen_data (clonato in extern/gen_data con ./scarica_gen_data.sh) (modello e parametri: extern/gen_data/docs/SPEC.md): a ogni seed sorteggia numero dei gradini (1–3), costante di tempo, rumore e disturbi, quindi ogni file ha una struttura diversa. Le sue caratteristiche che contano per fitseg sono elencate in assunzioni.md, sezione «Origine dei dati di prova».

Concetti

Termine Significato
serie una colonna del CSV da approssimare (T_C temperatura, dT_C differenza dall'ambiente). Tutte le serie condividono gli stessi domini
gradino salita positiva di temperatura, distribuita su 2–4 campioni, la cui salita complessiva supera soglia_gradino_c
dominio tratto contiguo di campioni con un tipo: riposo, riscaldamento o raffreddamento
riscaldamento la salita rapida di un gradino (2–4 campioni): troppo breve per un fit, è descritta come salto (\Delta, da → a, durata)
raffreddamento il decadimento dopo un gradino, fino al gradino successivo o alla fine; modello esponenziale
raffreddamento finale / intermedio il finale è l'ultimo dominio (il più lungo, parametri liberi); gli intermedi stanno tra due gradini (corti) e ricevono c e \tau dal finale
modello una famiglia di equazioni (costante, lineare, esp_decad); vedi algoritmi.md §5.1
parametro fisso parametro tenuto costante nel fit (non conta nei gradi di libertà); marcato «(fisso)» nel report
indeterminato nessun modello valido, oppure dominio con meno di n_min_punti campioni
non adeguato modello scelto ma con \hat\sigma_\text{res} > 1.5\,\sigma (scala robusta dei residui, che ignora gli scarti casuali): il modello non spiega i dati
tempo del dominio t' = t - t_0, con t_0 il tempo del primo campione del dominio

Esempio (seed 7 di gen_data)

La figura sopra è il risultato di fitseg analizza input/gen_7.csv su T_C: sul raffreddamento finale \tau = 12.12 \pm 0.04 s, c = 23.92 °C, A = 163.2 °C; i due raffreddamenti intermedi usano gli stessi c e \tau e stimano solo A (76.7 e 124.5 °C); i tre riscaldamenti sono salti di +79.7, +71.4 e +90.2 °C. I valori veri del seed 7 sono \tau = 1/k = 12.07 s e salti di 79.6, 71.1 e 89.4 °C: il fit li recupera entro lo 0.5 % (\tau) e l'1 % (salti). Su 60 seed diversi l'errore su \tau resta sotto il 2 % (test.md).

Dove andare avanti

Per… Leggi
lanciare i comandi, correggere i domini a mano uso.md
capire cosa si dà per vero e cosa succede se non lo è assunzioni.md
sapere come funzionano rilevamento, fit e scelta, con le formule algoritmi.md
orientarsi nel codice (un modulo alla volta) moduli.md
cambiare un valore (ogni chiave di config.toml) configurazione.md
leggere i file prodotti e i grafici output.md
eseguire e capire i test test.md
conoscere limiti noti e possibili estensioni limiti.md