ConditionalNearestTraceReducer¶
- class ConditionalNearestTraceReducer(step_time: float, time_constant: float, amplitude: int | float | complex, scale: int | float | complex, *, duration: float = 0.0, inclusive: bool = False, inplace: bool = False)[source]¶
Bases:
FoldReducerStores the trace of over time, scaled by the input, considering the latest condition.
\[\begin{split}x(t) = \begin{cases} sh + A & j^* \\ x(t - \Delta t) \exp \left(-\frac{\Delta t}{\tau_x}\right) & \neg j^* \end{cases}\end{split}\]For the trace (state) \(x\), observation \(h\), and criterion \(j^*\).
- Parameters:
step_time (float) – length of the discrete step time, \(\Delta t\).
time_constant (float) – time constant of exponential decay, \(\tau_x\).
amplitude (int | float | complex) – value to set trace to for matching elements, \(A\).
scale (int | float | complex) – multiplicative scale for contributions to trace, \(s\).
duration (float, optional) – length of time over which results should be stored, in the same units as \(\Delta t\). Defaults to
0.0.inclusive (bool, optional) – if the duration should be inclusive. Defaults to
False.inclusive – if the duration should be inclusive. Defaults to
False.inplace (bool, optional) – if write operations should be performed in-place. Defaults to
False.
Note
This is equivalent to
ScaledNearestTraceReducerexcept rather than use a criterion based on the observation, the second argument offold()is a condition tensor.- fold(obs: Tensor, cond: Tensor, state: Tensor | None) Tensor[source]¶
Application of scaled nearest trace.
- Parameters:
obs (torch.Tensor) – observation to incorporate into state.
cond (torch.Tensor) – condition if observations match for the trace.
state (torch.Tensor | None) – state from the prior time step,
Noneif no prior observations.
- Returns:
state for the current time step.
- Return type:
- interpolate(prev_data: Tensor, next_data: Tensor, sample_at: Tensor, step_time: float) Tensor[source]¶
Exponential decay interpolation between observations.
- Parameters:
prev_data (torch.Tensor) – most recent observation prior to sample time.
next_data (torch.Tensor) – most recent observation subsequent to sample time.
sample_at (torch.Tensor) – relative time at which to sample data.
step_time (float) – length of time between the prior and subsequent observations.
- Returns:
interpolated data at sample time.
- Return type: