Skip to content

File syn_signal.h

FileList > dsp > syn_signal.h

Go to the source code of this file

Signal statistics — sliding window min/max/mean/variance/RMS. More...

  • #include <stdbool.h>
  • #include <stddef.h>
  • #include <stdint.h>

Classes

Type Name
struct SYN_Signal
Signal statistics — sliding window with incremental min/max/mean.

Public Functions

Type Name
int32_t syn_signal_at (const SYN_Signal * sig, size_t index)
Get sample at index (0 = oldest, count-1 = newest).
void syn_signal_clear (SYN_Signal * sig)
Clear all samples.
int32_t syn_signal_crest_factor_q16 (SYN_Signal * sig)
Signal Crest Factor in Q16.16: Peak / RMS.
int32_t syn_signal_delta (const SYN_Signal * sig)
Rate of change: latest - previous.
void syn_signal_init (SYN_Signal * sig, int32_t * buf, size_t capacity)
Initialize with a caller-provided sample buffer.
int32_t syn_signal_latest (const SYN_Signal * sig)
Get the most recent sample.
int32_t syn_signal_max (SYN_Signal * sig)
Maximum value in the window.
int32_t syn_signal_min (SYN_Signal * sig)
Minimum value in the window.
int32_t syn_signal_power_q16 (const SYN_Signal * sig)
Mean signal power in Q16.16: Σ(x²) / N.
void syn_signal_push (SYN_Signal * sig, int32_t sample)
Push a new sample.
int32_t syn_signal_rms_q16 (const SYN_Signal * sig)
Root-Mean-Square in Q16.16: sqrt(Σ(x²) / N).
int32_t syn_signal_std_dev_q16 (const SYN_Signal * sig)
Standard deviation in Q16.16: sqrt(variance).
int32_t syn_signal_variance_q16 (const SYN_Signal * sig)
Variance in Q16.16 format.

Public Static Functions

Type Name
size_t syn_signal_count (const SYN_Signal * sig)
Number of samples in the window.
bool syn_signal_full (const SYN_Signal * sig)
True if the window is full.
int32_t syn_signal_mean (const SYN_Signal * sig)
Integer mean (truncated).
int32_t syn_signal_peak_to_peak (SYN_Signal * sig)
Peak-to-peak = max - min.
int64_t syn_signal_sum (const SYN_Signal * sig)
Sum of all samples in window.

Detailed Description

Maintains a circular buffer of samples and computes statistics incrementally. Designed for sensor data conditioning.

All math is integer-only. Mean and variance use Q16.16 for fractional precision without floating point.

** **

int32_t samples[32];
SYN_Signal sig;
syn_signal_init(&sig, samples, 32);

// Feed samples:
syn_signal_push(&sig, adc_read());

// Query stats:
int32_t min = syn_signal_min(&sig);
int32_t max = syn_signal_max(&sig);
int32_t avg = syn_signal_mean(&sig);       // integer mean
int32_t pp  = syn_signal_peak_to_peak(&sig);
int32_t var = syn_signal_variance_q16(&sig); // Q16.16

Public Functions Documentation

function syn_signal_at

Get sample at index (0 = oldest, count-1 = newest).

int32_t syn_signal_at (
    const SYN_Signal * sig,
    size_t index
) 

Parameters:

  • sig Signal instance.
  • index Sample index.

Returns:

Sample value.


function syn_signal_clear

Clear all samples.

void syn_signal_clear (
    SYN_Signal * sig
) 

Parameters:

  • sig Signal instance.

function syn_signal_crest_factor_q16

Signal Crest Factor in Q16.16: Peak / RMS.

int32_t syn_signal_crest_factor_q16 (
    SYN_Signal * sig
) 

Measures signal peakiness (e.g. 1.414 for sine wave). Returns 0 if RMS is 0 or window is empty.

Parameters:

  • sig Signal instance.

Returns:

Crest Factor in Q16.16 format.


function syn_signal_delta

Rate of change: latest - previous.

int32_t syn_signal_delta (
    const SYN_Signal * sig
) 

Returns 0 if fewer than 2 samples.

Parameters:

  • sig Signal instance.

Returns:

Delta between last two samples.


function syn_signal_init

Initialize with a caller-provided sample buffer.

void syn_signal_init (
    SYN_Signal * sig,
    int32_t * buf,
    size_t capacity
) 

Parameters:

  • sig Signal instance.
  • buf Sample buffer (caller-owned).
  • capacity Buffer capacity (number of samples).

function syn_signal_latest

Get the most recent sample.

int32_t syn_signal_latest (
    const SYN_Signal * sig
) 

Parameters:

  • sig Signal instance.

Returns:

Latest sample, or 0 if empty.


function syn_signal_max

Maximum value in the window.

int32_t syn_signal_max (
    SYN_Signal * sig
) 

Parameters:

  • sig Signal instance.

Returns:

Max, or 0 if empty.


function syn_signal_min

Minimum value in the window.

int32_t syn_signal_min (
    SYN_Signal * sig
) 

Parameters:

  • sig Signal instance.

Returns:

Min, or 0 if empty.


function syn_signal_power_q16

Mean signal power in Q16.16: Σ(x²) / N.

int32_t syn_signal_power_q16 (
    const SYN_Signal * sig
) 

Returns 0 if the window is empty.

Parameters:

  • sig Signal instance.

Returns:

Mean power in Q16.16 format.


function syn_signal_push

Push a new sample.

void syn_signal_push (
    SYN_Signal * sig,
    int32_t sample
) 

If the window is full, the oldest sample is evicted.

Parameters:

  • sig Signal instance.
  • sample New sample value.

function syn_signal_rms_q16

Root-Mean-Square in Q16.16: sqrt(Σ(x²) / N).

int32_t syn_signal_rms_q16 (
    const SYN_Signal * sig
) 

Returns 0 if the window is empty.

Parameters:

  • sig Signal instance.

Returns:

RMS value in Q16.16.


function syn_signal_std_dev_q16

Standard deviation in Q16.16: sqrt(variance).

int32_t syn_signal_std_dev_q16 (
    const SYN_Signal * sig
) 

Returns 0 if fewer than 2 samples.

Parameters:

  • sig Signal instance.

Returns:

Standard deviation in Q16.16.


function syn_signal_variance_q16

Variance in Q16.16 format.

int32_t syn_signal_variance_q16 (
    const SYN_Signal * sig
) 

Population variance: Σ(x - mean)² / N, returned as Q16.16. Returns 0 if fewer than 2 samples.

Parameters:

  • sig Signal instance.

Returns:

Variance in Q16.16.


Public Static Functions Documentation

function syn_signal_count

Number of samples in the window.

static inline size_t syn_signal_count (
    const SYN_Signal * sig
) 

Parameters:

  • sig Signal instance.

Returns:

Sample count.


function syn_signal_full

True if the window is full.

static inline bool syn_signal_full (
    const SYN_Signal * sig
) 

Parameters:

  • sig Signal instance.

Returns:

true if count == capacity.


function syn_signal_mean

Integer mean (truncated).

static inline int32_t syn_signal_mean (
    const SYN_Signal * sig
) 

Parameters:

  • sig Signal instance.

Returns:

Truncated mean, or 0 if empty.


function syn_signal_peak_to_peak

Peak-to-peak = max - min.

static inline int32_t syn_signal_peak_to_peak (
    SYN_Signal * sig
) 

Parameters:

  • sig Signal instance.

Returns:

Peak-to-peak value, or 0 if empty.


function syn_signal_sum

Sum of all samples in window.

static inline int64_t syn_signal_sum (
    const SYN_Signal * sig
) 

Parameters:

  • sig Signal instance.

Returns:

Running sum.



The documentation for this class was generated from the following file src/syntropic/dsp/syn_signal.h