Mercurial > hg > js-dsp-test
annotate fft/jsfft/README.md @ 40:223f770b5341 kissfft-double tip
Try a double-precision kissfft
author | Chris Cannam |
---|---|
date | Wed, 07 Sep 2016 10:40:32 +0100 |
parents | 66f9fd5ac611 |
children |
rev | line source |
---|---|
Chris@25 | 1 # jsfft |
Chris@25 | 2 |
Chris@25 | 3 Small, efficient Javascript FFT implementation for node or the browser. |
Chris@25 | 4 |
Chris@25 | 5 ## Usage |
Chris@25 | 6 |
Chris@25 | 7 JSFFT ships with a **complex_array** and a **fft** module. |
Chris@25 | 8 |
Chris@25 | 9 ```javascript |
Chris@25 | 10 var data = new complex_array.ComplexArray(512) |
Chris@25 | 11 // Use the in-place mapper to populate the data. |
Chris@25 | 12 data.map(function(value, i, n) { |
Chris@25 | 13 value.real = (i > n/3 && i < 2*n/3) ? 1 : 0 |
Chris@25 | 14 }) |
Chris@25 | 15 ``` |
Chris@25 | 16 |
Chris@25 | 17 Including the **fft** module attaches FFT methods to ComplexArray. FFT and |
Chris@25 | 18 InvFFT perform in-place transforms on the underlying data: |
Chris@25 | 19 |
Chris@25 | 20 ```javascript |
Chris@25 | 21 var frequencies = data.FFT() |
Chris@25 | 22 // Implement a low-pass filter using the in-place mapper. |
Chris@25 | 23 frequencies.map(function(frequency, i, n) { |
Chris@25 | 24 if (i > n/5 && i < 4*n/5) { |
Chris@25 | 25 frequency.real = 0 |
Chris@25 | 26 frequency.imag = 0 |
Chris@25 | 27 } |
Chris@25 | 28 }) |
Chris@25 | 29 ``` |
Chris@25 | 30 |
Chris@25 | 31 Alternatively, frequency-space filters can be implemented via the frequencyMap: |
Chris@25 | 32 |
Chris@25 | 33 ```javascript |
Chris@25 | 34 var filtered = data.frequencyMap(function(frequency, i, n) { |
Chris@25 | 35 if (i > n/5 && i < 4*n/5) { |
Chris@25 | 36 frequency.real = 0 |
Chris@25 | 37 frequency.imag = 0 |
Chris@25 | 38 } |
Chris@25 | 39 }) |
Chris@25 | 40 ``` |
Chris@25 | 41 |
Chris@25 | 42 ## Other Implementations |
Chris@25 | 43 |
Chris@25 | 44 [DSP](https://github.com/corbanbrook/dsp.js) is a full featured Digital Signal |
Chris@25 | 45 Processing library in JS which includes a JS FFT implementation. |