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:2.0.1'
Maven
<dependency>
<groupId>com.github.psambit9791</groupId>
<artifactId>jdsp</artifactId>
<version>2.0.1</version>
</dependency>
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 for reference.
Documentation
See the Wiki for an introduction to the general use of JDSP.
See the javadocs for more detailed documentation.
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 Sqares 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 operaton 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.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 the multi-channel signal and returns a low-dimensional signal |
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 |
Citation
If you are using this software in your research, please use the following citation:
@software{sambit_paul_2023_7675362,
author = {Sambit Paul and
Sibo Van Gool},
title = {psambit9791/jdsp: v2.0.1 (February 24, 2023)},
month = feb,
year = 2023,
publisher = {Zenodo},
version = {v2.0.1},
doi = {10.5281/zenodo.7675362},
url = {https://doi.org/10.5281/zenodo.7675362}
}
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 file for details.
You are free to use, modify and distribute this software, as long as the copyright header is left intact.