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).
Parameters:
sigSignal instance.indexSample index.
Returns:
Sample value.
function syn_signal_clear¶
Clear all samples.
Parameters:
sigSignal instance.
function syn_signal_crest_factor_q16¶
Signal Crest Factor in Q16.16: Peak / RMS.
Measures signal peakiness (e.g. 1.414 for sine wave). Returns 0 if RMS is 0 or window is empty.
Parameters:
sigSignal instance.
Returns:
Crest Factor in Q16.16 format.
function syn_signal_delta¶
Rate of change: latest - previous.
Returns 0 if fewer than 2 samples.
Parameters:
sigSignal instance.
Returns:
Delta between last two samples.
function syn_signal_init¶
Initialize with a caller-provided sample buffer.
Parameters:
sigSignal instance.bufSample buffer (caller-owned).capacityBuffer capacity (number of samples).
function syn_signal_latest¶
Get the most recent sample.
Parameters:
sigSignal instance.
Returns:
Latest sample, or 0 if empty.
function syn_signal_max¶
Maximum value in the window.
Parameters:
sigSignal instance.
Returns:
Max, or 0 if empty.
function syn_signal_min¶
Minimum value in the window.
Parameters:
sigSignal instance.
Returns:
Min, or 0 if empty.
function syn_signal_power_q16¶
Mean signal power in Q16.16: Σ(x²) / N.
Returns 0 if the window is empty.
Parameters:
sigSignal instance.
Returns:
Mean power in Q16.16 format.
function syn_signal_push¶
Push a new sample.
If the window is full, the oldest sample is evicted.
Parameters:
sigSignal instance.sampleNew sample value.
function syn_signal_rms_q16¶
Root-Mean-Square in Q16.16: sqrt(Σ(x²) / N).
Returns 0 if the window is empty.
Parameters:
sigSignal instance.
Returns:
RMS value in Q16.16.
function syn_signal_std_dev_q16¶
Standard deviation in Q16.16: sqrt(variance).
Returns 0 if fewer than 2 samples.
Parameters:
sigSignal instance.
Returns:
Standard deviation in Q16.16.
function syn_signal_variance_q16¶
Variance in Q16.16 format.
Population variance: Σ(x - mean)² / N, returned as Q16.16. Returns 0 if fewer than 2 samples.
Parameters:
sigSignal instance.
Returns:
Variance in Q16.16.
Public Static Functions Documentation¶
function syn_signal_count¶
Number of samples in the window.
Parameters:
sigSignal instance.
Returns:
Sample count.
function syn_signal_full¶
True if the window is full.
Parameters:
sigSignal instance.
Returns:
true if count == capacity.
function syn_signal_mean¶
Integer mean (truncated).
Parameters:
sigSignal instance.
Returns:
Truncated mean, or 0 if empty.
function syn_signal_peak_to_peak¶
Peak-to-peak = max - min.
Parameters:
sigSignal instance.
Returns:
Peak-to-peak value, or 0 if empty.
function syn_signal_sum¶
Sum of all samples in window.
Parameters:
sigSignal instance.
Returns:
Running sum.
The documentation for this class was generated from the following file src/syntropic/dsp/syn_signal.h