psambit9791 / jdsp

A Java Library for Digital Signal Processing

Home Page:https://jdsp.dev

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Logo Logo

Build Status codecov Maven Central javadoc jitpack License: MIT DOI

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.0.0'

Maven

<dependency>
  <groupId>com.github.psambit9791</groupId>
  <artifactId>jdsp</artifactId>
  <version>3.0.0</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.


Citation

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

@software{sambit_paul_2024_10448582,
  author       = {Sambit Paul},
  title        = {psambit9791/jdsp: v3.0.0 (January 1, 2024)},
  month        = jan,
  year         = 2024,
  publisher    = {Zenodo},
  version      = {v3.0.0},
  doi          = {10.5281/zenodo.10448582},
  url          = {https://doi.org/10.5281/zenodo.10448582}
}

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 file for details.
You are free to use, modify and distribute this software, as long as the copyright header is left intact.