Re: Discrimination soft

Page principale

Répondre à ce message
Auteur: Edgar Bonet
Date:  
À: guilde
Sujet: Re: Discrimination soft
Frédéric a écrit :
> [...] il s'agit juste de regarder la forme du signal [en sortie d'un détecteur de
> neutrons], et lorsque celui-ci monte au dessus d'un certain seuil, on met
> la sortie à 1, et lorsqu'il repasse en dessous d'un autre seuil, on repasse
> la sortie à 0.
>
> Ce n'est pas sorcier, mais il faut tenir compte du bruit, du fait que 2
> neutrons peuvent arriver assez proches et donc générer un signal plus
> complexe, etc...


Ça ne répond pas vraiment à ta question de bibliothèques, mais un truc
simple que tu peux essayer dans un premier temps est un petit filtre FIR
qui calcule la corrélation entre ton signal mesuré et le signal idéal
(sans bruit) attendu pour un neutron. Ça permet d'éliminer pas mal de
bruit, et ça devrait même être assez optimal si ton bruit est blanc.
Derrière, tu mets ton comparateur à hystérésis (comparateur à deux
seuils).

Voici un exemple d'implémentation en JavaScript. En guise de noyau tu
dois mettre le signal idéal. Le filtre ne s'active que lorsqu'il a lu
autant de points que la longueur du noyau :

var fir_filter = {
     kernel: [.004, .031, .109, .219, .274, .219, .109, .031, .004],
     memory: [],
     apply: function(x) {
         this.memory.push(x);
         if (this.memory.length < this.kernel.length)
             return x;  // do not filter until initialized
         if (this.memory.length > this.kernel.length)
             this.memory.shift();
         for (var i = 0, result = 0; i < this.kernel.length; i++)
             result += this.memory[i] * this.kernel[i];
         return result;
     }
};


Edgar.