An open API service indexing awesome lists of open source software.

https://github.com/psambit9791/jdsp

A Java Library for Digital Signal Processing
https://github.com/psambit9791/jdsp

adaptive-filters android android-library butterworth-filter chebyshev-filter convolution dsp fourier-transform hilbert-transform iir-filters java matlab-style-filters peak-detection savitzky-golay-filter short-time-fourier-transform signal-processing signal-processing-algorithms speech splines windowing

Last synced: 8 days ago
JSON representation

A Java Library for Digital Signal Processing

Awesome Lists containing this project

README

          

![Logo](https://github.com/psambit9791/jdsp/blob/master/res/img/JDSP-Logo-Inverted.png#gh-dark-mode-only)
![Logo](https://github.com/psambit9791/jdsp/blob/master/res/img/JDSP-Logo.png#gh-light-mode-only)

[![Build Status](https://github.com/psambit9791/jdsp/actions/workflows/maven.yml/badge.svg)](https://github.com/psambit9791/jdsp/actions/workflows/maven.yml)
[![codecov](https://codecov.io/gh/psambit9791/jdsp/branch/master/graph/badge.svg)](https://codecov.io/gh/psambit9791/jdsp)
[![Maven Central](https://img.shields.io/maven-central/v/com.github.psambit9791/jdsp.svg?label=Maven%20Central)](https://search.maven.org/search?q=g:%22com.github.psambit9791%22%20AND%20a:%22jdsp%22)
[![javadoc](https://javadoc.io/badge2/com.github.psambit9791/jdsp/javadoc.svg)](https://javadoc.io/doc/com.github.psambit9791/jdsp)
[![jitpack](https://jitpack.io/v/psambit9791/jdsp.svg)](https://jitpack.io/#psambit9791/jdsp)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg?)](https://github.com/psambit9791/jdsp/blob/master/LICENSE)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3903921.svg)](https://doi.org/10.5281/zenodo.3903921)

JDSP is a library of signal processing tools aimed at providing functionalities as available in MATLAB or in scipy-signal package for
Python. The goal is to provide easy-to-use APIs for performing complex operation on signals eliminating the necessity
of understanding the low-level complexities in the processing pipeline.

## Quick Start


To get the latest stable release of JDSP:

### Gradle
```
implementation 'com.github.psambit9791:jdsp:3.1.0'
```

### Maven
```

com.github.psambit9791
jdsp
3.1.0

```


For the latest development version of JDSP:

### Github
```
git clone --single-branch --branch master https://github.com/psambit9791/jdsp.git
```

### JitPack
You can use **JitPack** to use the development version on your application; use this [link](https://jitpack.io/#psambit9791/jdsp/master-SNAPSHOT) for reference.

## Documentation

See the [**Wiki**](https://github.com/psambit9791/jdsp/wiki) for an introduction to the general use of JDSP.

See the [**javadocs**](https://javadoc.io/doc/com.github.psambit9791/jdsp) for more detailed documentation.


## Citation

If you are using this software in your research, please use the following citation:

```
@software{sambit_paul_2024_13998103,
author = {Sambit Paul},
title = {psambit9791/jdsp: v3.1.0 (October 27, 2024)},
month = oct,
year = 2024,
publisher = {Zenodo},
version = {v3.1.0},
doi = {10.5281/zenodo.13998103},
url = {https://doi.org/10.5281/zenodo.13998103}
}
```


## Usage

| **Class** | **Type** | **Description** |
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------|
| com.github.psambit9791.jdsp.filter.Butterworth | IIR Filter | Implements Butterworth Filter for low-pass, high-pass, band-pass and band-stop operation |
| com.github.psambit9791.jdsp.filter.Chebyshev | IIR Filter | Implements Chebyshev Filter (Type 1 and Type 2) for low-pass, high-pass, band-pass and band-stop operation |
| com.github.psambit9791.jdsp.filter.Bessel | IIR Filter | Implements Bessel Filter for low-pass, high-pass, band-pass and band-stop operation |
| com.github.psambit9791.jdsp.filter.FIRWin1 | FIR Filter | Implements a windowed FIR filter for low-pass, high-pass, band-pass and band-stop operation |
| com.github.psambit9791.jdsp.filter.FIRWin2 | FIR Filter | Implements a windowed FIR filter (with gain) for low-pass, high-pass, band-pass and band-stop operation |
| com.github.psambit9791.jdsp.filter.FIRLS | FIR Filter | Implements an FIR filter which has the closest frequency response as desired optimised using Least Squares Minimization |
| com.github.psambit9791.jdsp.filter.Median | Kernel-based Filter | Implements Median Filter for smoothing while maintaining the sharp edges |
| com.github.psambit9791.jdsp.filter.Savgol | Kernel-based Filter | Implements Savitzky–Golay Filter for smoothing using Savitzky–Golay coefficients |
| com.github.psambit9791.jdsp.filter.Wiener | Kernel-based Filter | Implements Wiener Filter for the sharpening operation |
| com.github.psambit9791.jdsp.filter.adaptive.AP | Adaptive Filter | Implements Affine Projection Adaptive filter |
| com.github.psambit9791.jdsp.filter.adaptive.GNGD | Adaptive Filter | Implements Generalised Normalised Gradient Descent Adaptive Filter Adaptive filter |
| com.github.psambit9791.jdsp.filter.adaptive.LMS | Adaptive Filter | Implements Least Mean Squares Adaptive filter |
| com.github.psambit9791.jdsp.filter.adaptive.NLMS | Adaptive Filter | Implements Normalised Least Mean Squares Adaptive filter |
| com.github.psambit9791.jdsp.filter.adaptive.RLS | Adaptive Filter | Implements Reduced Least Squares Adaptive filter |
| com.github.psambit9791.jdsp.filter.adaptive.SSLMS | Adaptive Filter | Implements Sign-Sign Least Mean Squares Adaptive filter |
| com.github.psambit9791.jdsp.filter.adaptive.NSSLMS | Adaptive Filter | Implements Normalised Sign-Sign Least Mean Squares Adaptive filter |
| | | |
| com.github.psambit9791.jdsp.signal.Convolution | Signal Operation | Implements the convolve() and convolve1d() operation |
| com.github.psambit9791.jdsp.signal.CrossCorrelation | Signal Operation | Implements the cross-correlation operation |
| com.github.psambit9791.jdsp.signal.Deconvolution | Signal Operation | Implements the deconvolution operation for valid and full mode convolved signals |
| com.github.psambit9791.jdsp.signal.Detrend | Signal Operation | Implements the detrend operation to remove trends from a signal |
| com.github.psambit9791.jdsp.signal.Smooth | Signal Operation | Implements convolutional smoothing with rectangular and triangular window |
| com.github.psambit9791.jdsp.signal.Decimate | Signal Operation | Implements the decimation operation to downsample a signal after applying an anti-aliasing filter |
| com.github.psambit9791.jdsp.signal.Resample | Signal Operation | Implements the resampling operation to change the number of samples in a signal using Fourier method |
| com.github.psambit9791.jdsp.signal.Generate | Signal Operation | Helps to generate different waves and wavelets |
| | | |
| com.github.psambit9791.jdsp.signal.peaks.FindPeak | Peak Detection | Identifies peaks in the signal |
| com.github.psambit9791.jdsp.signal.peaks.Peak | Peak Detection | Calculates peak properties and allows filtering with them |
| com.github.psambit9791.jdsp.signal.peaks.Spike | Peak Detection | Calculates spike properties and allows filtering with them |
| | | |
| com.github.psambit9791.jdsp.transform.DiscreteFourier | Transformation | Applies the Discrete Fourier Transform on a signal |
| com.github.psambit9791.jdsp.transform.InverseDiscreteFourier | Transformation | Applies the Inverse Discrete Fourier Transform on a sequence and returns the original signal |
| com.github.psambit9791.jdsp.transform.FastFourier | Transformation | Applies the Fast Fourier Transform on a signal |
| com.github.psambit9791.jdsp.transform.InverseFastFourier | Transformation | Applies the Inverse Fast Fourier Transform on a sequence and returns the original signal |
| com.github.psambit9791.jdsp.transform.DiscreteSine | Transformation | Applies the Discrete Sine Transform on a signal |
| com.github.psambit9791.jdsp.transform.InverseDiscreteSine | Transformation | Applies the Inverse Discrete Sine Transform on a sequence and returns the original signal |
| com.github.psambit9791.jdsp.transform.FastSine | Transformation | Applies the Fast Sine Transform on a signal |
| com.github.psambit9791.jdsp.transform.InverseFastSine | Transformation | Applies the Inverse Fast Sine Transform on a sequence and returns the original signal |
| com.github.psambit9791.jdsp.transform.DiscreteCosine | Transformation | Applies the Discrete Cosine Transform on a signal |
| com.github.psambit9791.jdsp.transform.InverseDiscreteCosine | Transformation | Applies the Inverse Discrete Cosine Transform on a sequence and returns the original signal |
| com.github.psambit9791.jdsp.transform.FastCosine | Transformation | Applies the Fast Cosine Transform on a signal |
| com.github.psambit9791.jdsp.transform.InverseFastCosine | Transformation | Applies the Inverse Fast Cosine Transform on a sequence and returns the original signal |
| com.github.psambit9791.jdsp.transform.Hilbert | Transformation | Applies the Hilbert Transform on a signal and provides functions to return amplitude, phase and frequency information |
| com.github.psambit9791.jdsp.transform.PCA | Transformation | Applies Principal Component Analysis on a multi-channel signal and returns a low-dimensional signal |
| com.github.psambit9791.jdsp.transform.ICA | Transformation | Performs Independent Component Analysis on a multi-channel signal and returns the recovered source signals |
| com.github.psambit9791.jdsp.transform.ContinuousWavelet | Transformation | Applies the Wavelet Transform on a signal with one of Paul, Ricker or Morlet wavelet |
| com.github.psambit9791.jdsp.transform.InverseContinuousWavelet | Transformation | Applies the Inverse Wavelet Transform on a sequence transformed using CWT and returns the original signal |
| com.github.psambit9791.jdsp.transform.ShortTimeFourier | Transformation | Applies the Short Time Fourier Transform on a signal |
| com.github.psambit9791.jdsp.transform.InverseShortTimeFourier | Transformation | Applies the Inverse Short Time Fourier Transform on a sequence transformed using STFT and returns the original signal |
| | | |
| com.github.psambit9791.jdsp.speech.Silence | Speech | Provides methods to detect periods of silence in an audio |
| | | |
| com.github.psambit9791.jdsp.windows.Boxcar | Windowing | Generates a Boxcar (Rectangular) Window |
| com.github.psambit9791.jdsp.windows.GeneralCosine | Windowing | Generates a General Cosine Window with provided weights |
| com.github.psambit9791.jdsp.windows.Hamming | Windowing | Generates a Hamming Window |
| com.github.psambit9791.jdsp.windows.Hanning | Windowing | Generates a Hanning Window |
| com.github.psambit9791.jdsp.windows.Blackman | Windowing | Generates a Blackman Window |
| com.github.psambit9791.jdsp.windows.BlackmanHarris | Windowing | Generates a Blackman-Harris Window |
| com.github.psambit9791.jdsp.windows.Poisson | Windowing | Generates a Poisson (Exponential) Window |
| com.github.psambit9791.jdsp.windows.Gaussian | Windowing | Generates a Gaussian Window |
| com.github.psambit9791.jdsp.windows.FlatTop | Windowing | Generates a Flat Top Window |
| com.github.psambit9791.jdsp.windows.Nuttall | Windowing | Generates a Nuttall Window |
| com.github.psambit9791.jdsp.windows.Triangular | Windowing | Generates a Triangular Window |
| com.github.psambit9791.jdsp.windows.Tukey | Windowing | Generates a Tukey Window |
| com.github.psambit9791.jdsp.windows.Bartlett | Windowing | Generates a Bartlett Window |
| com.github.psambit9791.jdsp.windows.BartlettHann | Windowing | Generates a Bartlett-Hann Window |
| com.github.psambit9791.jdsp.windows.Bohman | Windowing | Generates a Bohman Window |
| com.github.psambit9791.jdsp.windows.Kaiser | Windowing | Generates a Kaiser Window |
| | | |
| com.github.psambit9791.jdsp.splines.AkimaSpline | Splines | Provides methods to construct an Akima Spline |
| com.github.psambit9791.jdsp.splines.BSpline | Splines | Provides methods to construct an B-Spline |
| com.github.psambit9791.jdsp.splines.QuadraticSpline | Splines | Provides methods to construct an Quadratic B-Spline |
| com.github.psambit9791.jdsp.splines.CubicSpline | Splines | Provides methods to construct an Cubic B-Spline |
| | | |
| com.github.psambit9791.jdsp.io.Wav | Input/Output | Provides methods to read from and write to WAV files |
| com.github.psambit9791.jdsp.io.Csv | Input/Output | Provides methods to read from and write to CSV files |
| | | |
| com.github.psambit9791.jdsp.misc.UtilMethods | Miscellaneous | Provides Numpy style utility functions, details in Wiki |
| com.github.psambit9791.jdsp.misc.Plotting | Miscellaneous | Enables plotting of different signals and points using line and scatter plots |
| com.github.psambit9791.jdsp.misc.Polynomial | Miscellaneous | Provides methods for operating with polynomial functions |
| com.github.psambit9791.jdsp.misc.Random | Miscellaneous | Provides methods to create random numbers as samples or multi-dimensional arrays |

## Supporting JDSP

JDSP is an open source project.
You can help by becoming a sponsor on Patreon or doing a one time donation on PayPal.

You can also show your appreciation on Ko-Fi.

Become a Patron

Donate on Paypal

Support on Kofi


## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

You are free to use, modify and distribute this software, as long as the copyright header is left intact.