SignalSharp

SignalSharp is a C# library designed for efficient signal processing and time series analysis. Whether you're dealing with noise reduction, filtering, forecasting, or change point detection, SignalSharp provides tools to help you get the job done.

Overview

Signal processing is a critical component in various applications, including telecommunications, audio processing, finance, and biomedical engineering. While other ecosystems, such as Python, have a plethora of signal processing libraries, C# lacks comprehensive open-source alternatives, often offering only paid or closed-source solutions. SignalSharp aims to fill this void by providing a free, open-source library for the C# community, enabling developers to work with advanced signal processing algorithms with ease.

Algorithms

Change Point Detection

  • PELT: Pruned Exact Linear Time (PELT) method detects multiple change points with high efficiency, using a pruning technique to improve computation speed without sacrificing accuracy.
  • CUSUM: Detects shifts in the mean value of a signal by accumulating deviations from a target value over time.

Cost Functions

  • L1 Cost Function: Robust against outliers and non-Gaussian noise.
  • L2 Cost Function: Ideal for normally distributed data.
  • RBF Cost Function: Handles non-linear relationships between data points.
  • Likelihood Cost Functions: Gaussian, Poisson, Bernoulli, and Binomial likelihoods, plus an Autoregressive (AR) cost function. These also provide likelihood metrics suitable for information criteria (BIC/AIC/AICc) during penalty selection.

Smoothing and Filtering

  • Savitzky-Golay Filter: Smooths data to reduce noise while preserving the shape of the signal.
  • Moving Average: Smoothing a signal using a moving average filter.

Extrapolation

  • Linear Extrapolation: Projects a linear trend fitted to recent samples.
  • Simple Exponential Smoothing: Level-only smoothing for data without trend or seasonality.
  • Holt's Method: Level and trend smoothing, with optional trend damping.

Optimization

  • Grid Search: Exhaustive evaluation over a parameter grid, with optional adaptive refinement.
  • Nelder-Mead: Derivative-free simplex optimization with optional multi-start.

Resampling

  • Downsampling: Reducing the number of samples in a signal.
  • Segment Statistics: Computing statistics (mean, median, max, min) for segments of a signal.

Getting Started

Ready to dive in? Check out our Getting Started for detailed instructions on how to install and begin using SignalSharp. This guide will help you set up the library and start processing your data in no time.

Explore the documentation to learn more about each algorithm and find detailed usage examples that suit your specific needs. Whether you're working on academic research, developing new technologies, or just exploring signal processing, SignalSharp is here to support your journey.


If you have any questions or need help, don't hesitate to reach out to the community or open an issue on our GitHub repository.