Buongiorno a tutti,
vi chiedo aiuto per risolvere un problema che mi assilla:
Dato un istogramma come quello che allego, c’è un algoritmo o una procedura per programmare un sistema che riconosca delle curve come quelle disegnate in rosso quindi con un massimo locale racchiuso tra due minimi locali (anche non identici come valore, quindi con una tolleranza)?
Ho fatto una prova normalizzando i valori del l’istogramma (ist) con la formula:
ist[n] = (ist[n]-max(ist))/(max(ist)-min(ist))
per cercare di “azzerare” i valori più bassi e trovare i minimi locali, per individuare l’inizio e le fine delle campane, ma dipende molto dai valori del l’istogramma che variano sempre. Poi ho tentato la strada di individuare i massimi locali percorrendo a destra e sinistra cercando valori in discesa e fermandomi nelle risalite, ma con il problema di individuare troppe campane (si potrebbe impostare una tolleranza ma cambierebbe da grafico a grafico).
Il numero di curve non è fisso ma deve essere ricavato automaticamente dalla procedura (nell’esempio 6 campane).
Comprendo la necessità di utilizzare delle variabili arbitrarie per questa procedura, come qualche valore di tolleranza, ma questo non è un problema se fosse fisso e stabilito a priori.
Qualcuno sa come si potrebbe procedere?