NAME

delay_unit - tapped delay line for vector sequence

PROTOTYPE

unitptr delay_unit( int n, int t, unitptr dest)

ARGUMENTS

int n
dimensionality of input and output vectors
int t
number of delay steps
unitptr dest
host unit for newly created instance

RETURN VALUE:

unitptr u
pointer to newly created unit

INTERFACE OF CREATED UNIT:

X_in[n]:
(input field 0) input vector
CTL_in[1]:
(input field 1) inverse time constant c
out_0[n]:
(output field 0) output vector (input at time of most recent exec operation = 1 time step ago)
...
out_t-1[n]:
(output field t-1) output vector (input t steps ago)

EXECUTION:

For f=t-1,t-2,...1:

    out_f[i] = (1-c) * out_f[i] + c * out_(f-1) [i]

For f=0:

    out_0[i] = (1-c) * out_0[i] + c * X_in[i]

INITIALIZATION:

A call of ctrl_unit(cmode,u) with cmode=NST_I_ZERO or cmode=NST_INIT sets all values out_f[i] to zero.

DESCRIPTION:

The created unit becomes a subunit of unit dest. The unit provides a buffer chain of leaky integrators. It buffers the t most recent input vectors and makes them available at output fields 0 (holds input present during previous exec call) to t-1 (input t exec steps ago). Each field has n pins. Constant MAXDELAY is the maximal number plus one of delay steps for which this routine will work. All new output values become a linear (precisely: a convex) combination of the old value and of the newly computed activity. A decay of the old value is determined by a decay factor (1-c), where c is the value at the control pin CTL_in[0] (default is c=1). The newly computed activity value is multiplicatively scaled by the factor c and super- imposed over the decayed old value. This has the effect, that each output behaves like a leaky integrator with a time constant of 1/c iteration steps. Special cases result for c=1 and c=0. In the former case, the new output completely replace the old value. This is the default setting after creation of the unit. In the latter case, the output value retains its old value (in fact, in this case, the internal computation is suppressed; therefore, c=0 can be used to switch the unit off). This unit is intended to facilitate construction of recurrent networks.

DEFAULTS:

c=1, out_f[i]=0

FILE:

nst_util

FILE

/homes/jontrup/nst5/man/../o.sol2//../foldersrc/nst_util.c