Releases: psambit9791/jdsp
v3.1.0 (October 27, 2024)
Release Notes
MAJOR FEATURE ADDITION:
- New methods for Fast Convolution and Fast Cross-Correlation by @skylarkgit in #82
- Updated uses of convolve() with fastConvolve() to improve performance
Bug Fix:
- Resolved issue with diff() when the input array is empty.
- Optimised code and tests to reduce code repetition
New Contributors
- @skylarkgit made their first contribution in #82
v3.0.0 (January 1, 2024)
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 (February 24, 2023)
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 (August 1, 2022)
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 (December 27, 2021)
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 (September 27, 2021)
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 (July 26, 2021)
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 (January 4, 2021)
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 (November 9, 2020)
Release Notes
- Added enhancement to enable filtering of peaks using multiple properties. Link to Issue: #8
- Fixed issues with PlateauSize calculation. Link to Issue: #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 (October 5, 2020)
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.