Title: | Continuous Wavelet Transformation for Spectroscopy |
---|---|
Description: | Fast application of Continuous Wavelet Transformation ('CWT') on time series with special attention to spectroscopy. It is written using data.table and 'C++' language and in some functions it is possible to use parallel processing to speed-up the computation over samples. Currently, only the second derivative of a Gaussian wavelet function is implemented. |
Authors: | J. Antonio Guzmán Q. [cre, aut, cph] |
Maintainer: | J. Antonio Guzmán Q. <[email protected]> |
License: | GPL (>= 3) |
Version: | 0.2.1 |
Built: | 2024-10-26 02:54:34 UTC |
Source: | https://github.com/antguz/cwt |
Fast application of Continuous Wavelet Transformation on time series with special attention to spectroscopy. It is written using 'data.table' and 'C++' language and in some functions it is possible to use parallel processing to speed-up the computation over samples.
Maintainer: J. Antonio Guzmán Q. [email protected] (ORCID) [copyright holder]
Useful links:
Compute a 1D continuous wavelet transformation using 2st order derivative Gaussian wavelet.
cwt(t, scales, variance = 1, summed_wavelet = FALSE, threads = 1L)
cwt(t, scales, variance = 1, summed_wavelet = FALSE, threads = 1L)
t |
A |
scales |
A positive |
variance |
A positive |
summed_wavelet |
If |
threads |
An |
If summed_wavelet = TRUE
, it returns a data.table
where
columns are the sum of wavelet scales. If summed_wavelet = FALSE
, it
returns an array
(i.e., time, samples, and scales).
J. Antonio Guzmán Q.
time_series <- sin(seq(0, 20 * pi, length.out = 100)) # Using a numeric vector cwt(t = time_series, scales = c(1, 2, 3, 4, 5), summed_wavelet = FALSE) cwt(t = time_series, scales = c(1, 2, 3, 4, 5), summed_wavelet = TRUE) # Using a matrix times <- 100 frame <- matrix(rep(time_series, times), nrow = times, byrow = TRUE) cwt(t = frame, scales = c(1, 2, 3, 4, 5), summed_wavelet = FALSE) cwt(t = frame, scales = c(1, 2, 3, 4, 5), summed_wavelet = TRUE)
time_series <- sin(seq(0, 20 * pi, length.out = 100)) # Using a numeric vector cwt(t = time_series, scales = c(1, 2, 3, 4, 5), summed_wavelet = FALSE) cwt(t = time_series, scales = c(1, 2, 3, 4, 5), summed_wavelet = TRUE) # Using a matrix times <- 100 frame <- matrix(rep(time_series, times), nrow = times, byrow = TRUE) cwt(t = frame, scales = c(1, 2, 3, 4, 5), summed_wavelet = FALSE) cwt(t = frame, scales = c(1, 2, 3, 4, 5), summed_wavelet = TRUE)
It resample spectra data using Full Width Half Maximum (FWHM).
resampling_FWHM(spectra, wavelengths, new_wavelengths, FWHM, threads = 1L)
resampling_FWHM(spectra, wavelengths, new_wavelengths, FWHM, threads = 1L)
spectra |
A |
wavelengths |
A |
new_wavelengths |
A |
FWHM |
A |
threads |
An |
It returns a data.table
with the resampled spectra, where columns
are the new bands and rows are samples.
J. Antonio Guzmán Q.
mean <- 50 sd1 <- 5 sd2 <- 10 n <- 100 test <- matrix(c(dnorm(1:n, mean = mean, sd = sd1), dnorm(1:n, mean = mean, sd = sd2)), nrow = 2, byrow = TRUE) current_bands <- 1:n new_bands <- seq(10, 90, by = 5) FHWM <- rep(5, length(new_bands)) resampling_FWHM(spectra = test, wavelengths = current_bands, new_wavelengths = new_bands, FWHM = FHWM)
mean <- 50 sd1 <- 5 sd2 <- 10 n <- 100 test <- matrix(c(dnorm(1:n, mean = mean, sd = sd1), dnorm(1:n, mean = mean, sd = sd2)), nrow = 2, byrow = TRUE) current_bands <- 1:n new_bands <- seq(10, 90, by = 5) FHWM <- rep(5, length(new_bands)) resampling_FWHM(spectra = test, wavelengths = current_bands, new_wavelengths = new_bands, FWHM = FHWM)