@neurodevs/node-signal-processing
v4.0.0
Published
Object-oriented algorithms for digital signal processing.
Readme
node-signal-processing
Object-oriented algorithms for digital signal processing.
Table of Contents
Overview
This package contains object-oriented algorithms for digital signal processing.
Installation
Install the package with your preferred package manager, such as:
npm install @neurodevs/node-signal-processing
or:
yarn add @neurodevs/node-signal-processing
Usage
Fft
import { Fft } from '@neurodevs/node-signal-processing'
const signal = [1, 2, 3, 4]
const fft = Fft.Create({ radix: signal.length })
const frequencies = fft.forward(signal)
const original = fft.inverse(frequencies)FirBandpassFilter
import { FirBandpassFilter } from '@neurodevs/node-signal-processing'
const rawPpgSignal: number[] = [...]
const filter = FirBandpassFilter.Create({
sampleRate: 64, // PPG sample rate
lowCutoffHz: 0.4, // Filter under 24 bpm heart rate
highCutoffHz: 4.0, // Filter over 240 bpm heart rate
numTaps: 4 * 64 + 1, // Heuristic: 4 * sampleRate + 1
attenuation: 50 // Frequencies outside bandpass reduced by 50 dB
})
const filteredPpgSignal = filter.run(rawPpgSignal)HilbertPeakDetector
import { HilbertPeakDetector } from '@neurodevs/node-signal-processing'
const detector = HilbertPeakDetector.Create()
const filteredPpgSignal: number[] = [...] // See FirBandpassFilter example
const timestamps: number[] = [...] // Must be same length as filteredPpgSignal
const results = detector.run(filteredPpgSignal, timestamps)HilbertTransformer
import { HilbertTransformer } from '@neurodevs/node-signal-processing'
const transformer = HilbertTransformer.Create()
const signal = [1, 2, 3, 4]
const { analyticSignal, envelope } = transformer.run(signal)