Jump to content

User Reference:Normalizer

From BCI2000 Wiki
Revision as of 10:44, 4 April 2007 by Mellinger (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Function

The Normalizer applies a linear transformation to its input signal. For each channel, an offset value is subtracted, and the result multiplied with a gain value:

outputi=(inputiNormalizerOffseti)×NormalizerGaini

Adaptation

From the past statistics of its input, the Normalizer estimates offset and gain values adaptively to make its output signal

  • zero mean, and
  • unit variance.

The Normalizer uses data buffers to accumulate its past input according to user-defined rules. These rules are called buffer conditions because they are given in terms of boolean expressions. Each data buffer is associated with such a boolean expression. Whenever an expression evaluates to true, the current input will be appended to the associated buffer. Whenever it comes to updating offset and gain values, the Normalizer will use the content of its buffers to estimate data mean and variance.

Typically, the Normalizer's input is the output of a classifier, which it transforms into a zero mean/unit variance control signal which is then transmitted to an application module. Using the zero mean/unit variance property, an application module can then relate entities such as window size, screen update rate, cursor speed, and trial duration.

Parameters

For each channel, adaptation may be configured independently.

 "Filtering floatlist NormalizerOffsets= 2 0 0 "
   "0 % % // normalizer offsets",
 "Filtering floatlist NormalizerGains= 2 1 1 "
   "0 % % // normalizer gain values",
 "Filtering intlist Adaptation= 2 2 2 "
   "0 0 2 // 0: no adaptation, "
            "1: zero mean, "
            "2: zero mean, unit variance "
            "(enumeration)",
 "Filtering string UpdateTrigger= (Feedback==0) "
   "% % % // expression to trigger offset/gain update when changing from 0 "
   "(use empty string for continuous update)",
 "Filtering matrix BufferConditions= 2 1 "
   "(Feedback)&&(TargetCode==1) "
   "(Feedback)&&(TargetCode==2) "
   "% % % // expressions corresponding to data buffers "
   "(columns correspond to output channels, multiple rows correspond to"
   " multiple buffers)",
 "Filtering float BufferLength= 9s 9s % % "
   "0 0 % // time window of past data per buffer that enters into statistic",

States

None.

Examples

Trial-based 1D Feedback Task with pre-defined Targets

Continuous 1D Control without pre-defined Targets