Controllo una variabile in tempo reale in cui viene generato un nuovo valore ogni 1/25 di secondo. A seconda delle condizioni, questa variabile può essere stabile, ovvero fluttuare un po '(+/- 1%) attorno ad un certo valore (per semplicità, prenderò il valore reale di 40 dai miei recenti esperimenti) o fluttuare ampiamente da 0 a 6x o 8x volte più grande del valore stabile (200-370 per l'esempio). Il mio obiettivo è rilevare questi periodi stabili.
In questo momento risolvo questo problema come segue:
- misura la media e la deviazione della variabile in entrata dal inizio delle misurazioni;
- se in qualsiasi momento il rapporto di deviazione / media è maggiore di una soglia (0.15 adesso) I considera che la variabile è entrata in un periodo instabile, altrimenti - il la variabile è considerata stabile.
Questo approccio generalmente funzionava, ma non così bene. A volte, il rilevatore non riesce a rilevare periodi instabili. Ecco l'immagine del recente esperimento in cui il rapporto (in percentuale) era inferiore al 15%, il rilevatore considerato periodo come stabile, tuttavia si può vedere chiaramente che la variabile diventa instabile verso la fine del grafico (l'asse sinistro è per la media e "delta" - valore della variabile, asse destro per la deviazione / rapporto medio in percentuale):
Comepuoivedere,lavariabile(lineablu,delta)iniziaafluttuareselvaggiamenteallafinedelgrafico,tuttavialadeviazione/mediadelrapportorimanesottolasoglia(ilmassimoèintornoall'8%)enonattivailrilevatore.
Quindimichiedo,secisonoalcunetecniche/algoritmidirivelatoridioscillazioniesistentichepossonoaiutarearegolarelasensibilitàdelrivelatore?Attualmente,stopensandodiutilizzarelamediamobileperilvaloremedioeabbassarelasogliafinoall'8%.
Descrizionedelsistemadialtolivello
C'èunproduttorechegenerapacchettiavelocitàcostante,anchesepotrebbeessereinterrottoeilritardotraproduttoripotrebbenonessereesattamentequelloscelto(cioèiltargetè25fps,mailritardopuòvariaretra30e50ms,moltoraramentepuòessereinterrottoeilritardopuòdiventareildoppio).Questipacchettisonodisponibilisullareteememorizzatinellacache.Ilconsumatorerichiedequestipacchettiinviandorichieste.Miraaesaurirelacache-emettendounagrandequantitàdirichieste.Quellerichiestecherichiedonodatiinesistenti,diventerannoinsospesoeavrannorispostanonappenaverrannogeneratipacchetticorrispondenti.Pertanto,ilconsumatoresapràchehaesauritolacacheunavoltacheidatiarriverannoconunperiodo"stabile", cioè quello che "approssimativamente" corrisponde al tasso di produzione target. Come si può vedere, questo ritardo inter-arrivo è influenzato 1 / dal produttore (non è esattamente 40ms) e 2 / interruzioni di rete.
Ecco i dati di esempio; ci sono molti parametri aggiuntivi, ma il vero valore osservato è nella colonna "delta".