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
- Host: GitHub
- URL: https://github.com/psambit9791/jdsp
- Owner: psambit9791
- License: mit
- Created: 2019-12-05T14:40:44.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2024-11-04T23:59:09.000Z (about 1 year ago)
- Last Synced: 2024-11-05T00:31:16.011Z (about 1 year ago)
- Topics: 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
- Language: Java
- Homepage: https://jdsp.dev
- Size: 31.5 MB
- Stars: 249
- Watchers: 12
- Forks: 43
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README


[](https://github.com/psambit9791/jdsp/actions/workflows/maven.yml)
[](https://codecov.io/gh/psambit9791/jdsp)
[](https://search.maven.org/search?q=g:%22com.github.psambit9791%22%20AND%20a:%22jdsp%22)
[](https://javadoc.io/doc/com.github.psambit9791/jdsp)
[](https://jitpack.io/#psambit9791/jdsp)
[](https://github.com/psambit9791/jdsp/blob/master/LICENSE)
[](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.
## 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.