JDSP Versions Save

A Java Library for Digital Signal Processing

v3.0.0

4 months ago

Release Notes

MAJOR FEATURE ADDITION:

  • New module for ICA

  • New module for Discrete Sine/Cosine Transform (Forward and Inverse)

  • New module for Fast Sine/Cosine Transform (Forward and Inverse)

  • New functions for polynomial fitting

    • polyfit()
    • polyval()
    • polyder()
    • polyint()
  • New functions for generating random numbers

    • Ability to set seed, mean and standard deviation
    • Can be between 0 and 1, integers from a range or from a normal distribution
    • Supports single digit, 1D, 2D and 3D matrices as outputs
  • Added 'interp' mode for Savgol filter

  • New functions in Utilities:

    • Get sign of a number or an array of numbers (equivalent to numpy.sign())
    • Get a submatrix from an existing matrix

v2.0.1

1 year ago

Release Notes

  • PATCHES:
  • Faster peak prominence and peak width computation
  • All peak properties are computed during object instantiation - get() only returns the relevant data.
  • Fixed issue with Generate() class - Refer to issue 47

v2.0.0

1 year ago

Release Notes

  • MAJOR FEATURE ADDITION:
  • Speech module
    • Silence Detection
  • Hilbert Transform now allows force usage of DFT (output is same as scipy.signal.hilbert with DFT, not with FFT)
  • Fourier Transform now has a getFFTFreq() function which returns frequency bins.

Breaking Change

  • For IIR filters, the filters are now reusable. Object instantiation does not require the signal. Signal now passed as argument to the filtering functions - [lowPassFilter(), highPassFilter(), bandPassFilter(), bandStopFilter()]. Refer to the wiki or javadocs for details.

  • For Kernel filters, the filters are now reusable. Object instantiation does not require the signal. Signal now passed as argument to the filtering functions - [filter()]. Refer to the wiki or javadocs for details.

Patches:
  • Major issue with Peak Detection now fixed.
    • To be noted, functions for computing peak prominence and peak width are resource intensive and can take time to complete execution. Performance improvements have been made so that compute is done only once per object and only when required.

v1.0.0

2 years ago

Release Notes

  • MAJOR FEATURE ADDITION:
  • Paul wavelet & Chrip Signal under Generate() class
  • CWT and ICWT functionality with support for 3 wavelet types: Ricker, Morlet and Paul.
  • STFT & Inverse STFT (using both FFT and DFT)
  • Complex Convolution
  • Deconvolution & Complex Deconvolution (full & same only) (uses DFT and QRDecomposition) [long signals may take longer processing time]
  • Adaptive Filters
    • LMS
    • NLMS
    • RLS
    • GNGD
    • AP
Patches:
  • Added matToComplex() functions for converting 2D arrays into a list of complex numbers.

  • reverse() function for Complex list

  • Added get_window() & apply_window() under _Window

  • Backward incompatible changes made with this commit to accommodate additional functionalities: returnAbsolute() ➔ getMagnitude() returnComplex2D() ➔ getFull() returnComplex() ➔ getComplex()

  • Additional methods added to DiscreteFourier class: getPhaseRad() ➔ Returns the phase in radians getPhaseDeg() ➔ Returns the phase in degrees getMagPhaseRad() ➔ Returns the magnitude and the phase (radians) getMagPhaseDeg() ➔ Returns the magnitude and the phase (degrees)

  • FIRWin1 now uses enum

  • Added FFT and InverseFFT classes.

  • Added a _Fourier interface which is implemented by FFT and DFT.

  • Added an _InverseFourier interface which is implemented by IFFT and IDFT.

  • All transformations can now be done by calling transform() using the object of given class.

v0.8.0

2 years ago

Release Notes

  • MAJOR FEATURE ADDITION: Added new module for Splines
    • Akima Spline
    • B-Spline
    • Cubic Spline
    • Quadratic Spline
  • Polyphase Resampling
Patches:
  • Added flattenMatrix() function to convert 2D matrices to arrays
  • Added FIRWin1(int numTaps, double beta, boolean direct_kaiser) to directly create filters using beta parameter

v0.7.0

2 years ago

Release Notes

  • MAJOR FEATURE ADDITION: Added new module for computing FIR Filters Coefficients using different methods, and applying them to signals:
    • Added Abstract Class for FIRFilter
    • FIR Window Method - FirWin1 and FirWin2
    • FIR Least Squares Method - FIRLS
  • Added Kaiser window class
  • Added Chebyshev Series Evaluation function
  • Added 0th Order modified Bessel order evaluation function
  • Added sinc() evaluation function - numeric and array operation
  • Added a linear interpolation function called interpolate()
  • Added a function called isSorted() to check if array is sorted in a specific order
  • Added Hankel & Toeplitz construction from vector
  • Added Ricker and Morlet wavelet generator
Patches:
  • Changed interface name from _FrequencyFilter to _IIRFilter. This is for clarification and support during development of FIR Filter methods.
  • Added Autocorrelation as a feature in CrossCorrelation class
  • Convolution and CrossCorrelation can now have window size > signal size
  • Added returnComplex() to DFT which returns a complex array

v0.6.0

3 years ago

Release Notes

  • Added Fourier based resampling method under signals module.
  • Added support for reading and writing of CSV files under IO module
Patches:

v0.5.1

3 years ago

Release Notes

  • Added enhancement to enable filtering of peaks using multiple properties. Link to Issue: https://github.com/psambit9791/jDSP/issues/8
  • Fixed issues with PlateauSize calculation. Link to Issue: https://github.com/psambit9791/jDSP/issues/10
  • Combined peak filtering methods for using upper and lower thresholds together. Now passing null in either upper or lower threshold argument will automatically filter only with the numeric argument.
  • Combined spike filtering methods for using upper and lower thresholds together. Now passing null in either upper or lower threshold argument will automatically filter only with the numeric argument.

v0.5.0

3 years ago

Release Notes

  • Included new module called IO for Read/Write

    • Added support for WAV File
  • Added new module for Window Functions. Presently supports the following window functions:

    • Boxcar
    • Hamming
    • Hanning
    • Bartlett-Hann
    • Bartlett
    • Blackman
    • Blackman-Harris
    • Poisson (exponential)
    • Gaussian
    • Flat Top
    • Nuttall
    • Triangular
    • Tukey
    • Bartlett-Hann
    • Bartlett
    • Bohman
New Utilities:
  • Added an abstract class _Window to support building custom windows
  • Added an interface _FrequencyFilter for building frequency-based filters
  • Added an interface _KernelFiIter for building kernel-based filters
Patches:
  • [Bug Fix] Frequency Filter now throws error if lower cutoff frequency is greater than or equal to the higher cutoff frequency.
  • Made changes to Plotting utility - saveAsPNG() function requires the extension along with the filename to work.

v0.4.0

3 years ago

Release Notes

  • Added new features to Generate Signal

    • Gaussian Pulse
    • Unit Impulse
    • Sawtooth
  • Added Principal Component Analysis (PCA) under transform

New Utilities:
  • Function to get Absolute Value of 1D and 2D Arrays
  • Matrix Transpose Function
  • Matrix Multiplication Function
  • Added Scalar Arithmetic Operation on 1-D Arrays as a Function
  • Added Linestyle to Plots
Patches:
  • Linspace issue for ArrayOutOfBoundsException fixed
  • Linspace issue for not counting span between start and stop for calculation fixed
  • Updated ECG dataset to "resources" folder for consistency