vctrs
to Suggests
to fix the issue that fails the unit test due to an update in testthat
package.design_filter
ensures frequency window cuts off within 0 to Nyquist
fftfilt
allows matrix inputfiltfilt
with a=1
(FIR
filter) calls fftfilt
to speed uppwelch
incorrect power calculation. The results agrees mostly with Matlab
functionhamming
window as the default in pwelch
; exported additional window options such as blackman
families, bohmanwin
, flattopwin
, and hanning
c++
template issue caused by vcglib
, which fails to compile under clang19
decimate
agrees with Matlab
now (both fir
and iir
filters)freqz2
to obtain the frequency response of a digital filter (similar to gsignal::freqz
but with more accurate cutoff frequency calculation and more customize plots)diagnose_filter
check_filter
to obtain expected magnitude at given frequency and reciprocal condition numbersignal
and use gsignal
insteaddesign_filter
for both fir
and iir
filters, allowing both entry and intermediate users to design band-pass/stop, low/high pass filters easily.iir
filter order generated from design_filter
will be checked against rcond_filter_ar
(reciprocal condition number) to make improve the numeric stabilitydijkstra
; the package passed asan
, valgrind
test provided by rhub2
dijkstra
method occasionally causing memory error. New method is much faster now.plot.pwelch
not displaying the signal names correctly.c++17
requirement and supports 11, 14, and 17 standardsFIR1
filterpwelch
throwing warnings when signal is zero (or zero power)dijkstra
to find shortest paths in meshvcglib
C++
template issue via type explicit callsfir1
filter when band-passing signals with incorrect n
pwelch
plot works with zero power now; mv_pwelch
plot error fixedband_pass2
to avoid NA
generated when upper band frequency is Nyquist
Vector3
, Matrix4
, Quaternion
for in-place calculationWASM
CRAN
: "format string is not a string literal (potentially insecure)"filearray
grow_volume
mesh_from_volume
no longer throw errors if the mesh does not form a manifoldfill_surface
to fill in volume based on given surface meshmesh_from_volume
to generate mesh from volume. This function can be used together with fill_surface
to generate surface enveloperegister_volume
to align two imaging data using linear or non-linear registrationfftw
on 2D
image and 3D
volume data1D
, 2D
, 3D
data using FFT
pwelch
frequency not starting from zero issueTinyThread
using the latest pull-request to RcppParallel
interpolate_stimulation
to detect stimulation signals within the response and interpolate with smooth signalssplines
fast_quantile
and fast_mvquantile
to improve the quantile/median calculation speedplot_signals
plotting range too large when signals have large values (such as stimulation)TinyThreads
library memory leak issuesdiagnose_channel
, avoid duplicated pwelch
calculationfilter
, filtfilt
that produce the same results as Matlab
(with precision error)pwelch
as a row-major matrix to speed up calculationwavelet_cycles_suggest
to provide default calculation of wavelet cyclessignature
to wavelet to resolve potential cache conflicts when running in multiple processes. (This allows RAVE
to run wavelet on multiple subjects at the same time)pwelch
pwelch
sampling frequency to be greater than the signal lengthpwelch
plot to properly handle graph text, margin, axisplot_signals
to plot multiple functional data within the same canvasC++
code to inst/includes
so other users can dynamically link to the functions (https://github.com/dipterix/ravetools/issues/5)fftw
related codefftw
plans to respect the flagsC++
to convert raw binary bytes to uint
, int
, float
, and string
Parallel processes might use different temporary directory paths. To improve the performance, it is recommended to set a shared temporary directory, hence this version
RAVETOOLS_TEMPDIR
or option ravetools.tempdir
.This version fixes a memory issue reported by CRAN
check (gcc-UBSAN
).
NA_INTEGER
is subtracted by one before being converted to R_xlen_t
type. This update fixes this issueRcppParallel
and copied part of it into inst/include
folder, with TBB
removed under the GPL-3
license framework.This is an initial version of ravetools
. Although a bare minimal set of signal processing functions are provided, it is sufficient to perform preprocess pipelines on most iEEG
signals. Some functions are added from the dipsaus
package, with considerable performance improvement. The C++
functions have been tested on all major platforms, with different architectures (ARM
, i386
, x64
).
README
file to demonstrate basic usageNEWS.md
file to track changes to the package.decimate
with FIR
filters creating the same results as in Matlab
detrend
function todiagnose_channel
to visually inspect channel signalsmorlet_wavelet
to enable fast and memory efficient wavelet decomposition; the result agrees with existing Matlab
code with floating errors (10^-7
)multitaper
pwelch
(Welch
periodogram)notch_filter
to remove line noiseThe following functions are implemented in C++
parallel. They tend to be faster than normal base-R implementations, depending on the number of CPU
cores used.
collapse
to collapse arraysshift_array
to shift array along certain indicesfast_cov
to calculate pearson
covariance matrix in parallelbaseline_array
to calculate baseline arrays with multiple margins