Problema.
C'è un segnale discreto (esempio sotto).
È noto che ha una forma di impulso rettangolare con rumore gaussiano bianco additivo.
, , ,
Dove è una funzione step di Heaviside, è un rumore gaussiano bianco additivo, è un'altezza di impulso rettangolare, è un indice del primo campione di impulso rettangolare, è un indice dell'ultimo campione di impulso rettangolare, è il livello costante del segnale, è un parametro regolabile.
Tutti i parametri possono avere un ampio intervallo di valori.
È necessario trovare il valore di (durata dell'impulso rettangolare nei campioni).
Possibili soluzioni.
Al momento, ho provato due modi per risolvere questo problema.
Filtro passa basso con soglia.
Come primo tentativo, ho usato uno schema semplice con filtro passa basso e soglia.
1. Applicare il filtro passa basso FIR con frequenza di taglio pari a .
2. Stimare la media dispersione del rumore filtrato dai primi campioni del segnale.
3. Impostare la soglia .
4. Stima .
5. Stima .
Pro:
1. Questo algoritmo è semplice.
2. È facile scrivere un'implementazione veloce.
Contro:
1. È difficile stimare il valore efficiente della frequenza di taglio del filtro. Da un lato un valore basso può corrompere la forma di impulsi brevi. D'altro canto, un valore elevato riduce l'effetto della filtrazione.
2. L'algoritmo non utilizza tutte le informazioni che abbiamo sul segnale.
Analisi di regressione
Come secondo tentativo, ho provato ad approssimare la sequenza di input dei campioni con la funzione .
, , dove è un piccolo parametro.
Per approssimazione ho usato il metodo dei minimi quadrati con discesa gradiente per minimizzare la funzione di costo.
1. Impostare i valori iniziali per , , , .
2. Eseguire la discesa gradiente.
3. Impostare la soglia .
4. Stima .
5. Stima .
Pro:
1. Questo algoritmo fornisce risultati con buona precisione.
2. Funziona per una vasta gamma di durate.
Contro:
1. È molto lento.
Domanda.
Dopotutto, non sono soddisfatto della precisione del primo algoritmo e della velocità del secondo. Come risolveresti questo problema?
C'è qualche soluzione classica che non sono riuscito a trovare?
Idee, collegamenti, qualsiasi feedback saranno molto apprezzati.
Grazie.