netwire-3.1.0: Fast generic automaton arrow transformer for AFRP

MaintainerErtugrul Soeylemez <es@ertes.de>

Control.Wire.Prefab.Analyze

Contents

Description

Various signal analysis tools

Synopsis

Statistics

Average

avg :: forall e v (>~). (Fractional v, Unbox v, WirePure >~) => Int -> Wire e >~ v vSource

Calculate the average of the signal over the given number of last samples. If you need an average over all samples ever produced, consider using avgAll instead.

  • Complexity: O(n) space, O(1) time wrt number of samples.
  • Depends: current instant.

avgAll :: forall e v (>~). (Fractional v, WirePure >~) => Wire e >~ v vSource

Calculate the average of the signal over all samples.

Please note that somewhat surprisingly this wire runs in constant space and is generally faster than avg, but most applications will benefit from averages over only the last few samples.

  • Depends: current instant.

avgFps :: (Arrow (Wire e >~), Fractional t, Unbox t, WirePure >~, WWithDT t >~) => Int -> Wire e >~ a tSource

Calculate the average number of frames per virtual second for the last given number of frames.

Please note that this wire uses the clock from the WWithDT instance for the underlying arrow. If this clock doesn't represent real time, then the output of this wire won't either.

avgFpsIntSource

Arguments

:: (Arrow (Wire e >~), Fractional t, Unbox t, WirePure >~, WSampleInt >~, WWithDT t >~) 
=> Int

Interval size.

-> Int

Number of Samples.

-> Wire e >~ a t 

Same as avgFps, but samples only at regular intervals. This can improve performance, if querying the clock is an expensive operation.

Peak

highPeak :: (Ord b, WirePure >~) => Wire e >~ b bSource

Outputs the high peak of the input signal.

  • Depends: Current instant.

lowPeak :: (Ord b, WirePure >~) => Wire e >~ b bSource

Outputs the low peak of the input signal.

  • Depends: Current instant.

peakBy :: forall b e (>~). WirePure >~ => (b -> b -> Ordering) -> Wire e >~ b bSource

Outputs the high peak of the input signal with respect to the given comparison function.

  • Depends: Current instant.

Monitoring

collect :: forall b e (>~). (Ord b, WirePure >~) => Wire e >~ b (Set b)Source

Collects all distinct inputs ever received.

  • Complexity: O(n) space, O(log n) time wrt collected inputs so far.
  • Depends: current instant.

diff :: forall b e (>~). (Eq b, Monoid e, WirePure >~) => Wire e >~ b bSource

Outputs the last input value on every change of the input signal. Acts like the identity wire at the first instant.

  • Depends: current instant.
  • Inhibits: on no change after the first instant.

firstSeen :: forall a e t (>~). (Ord a, WirePure >~, WWithSysTime t >~) => Wire e >~ a tSource

Reports the first global time the given input was seen.

  • Complexity: O(n) space, O(log n) time wrt collected inputs so far.
  • Depends: Current instant.

lastSeen :: forall a e t (>~). (Monoid e, Ord a, WirePure >~, WWithSysTime t >~) => Wire e >~ a tSource

Reports the last time the given input was seen. Inhibits when seeing a signal for the first time.

  • Complexity: O(n) space, O(log n) time wrt collected inputs so far.
  • Depends: Current instant.
  • Inhibits: On first sight of a signal.