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