Chris@25: Chris@25: Chris@25: Chris@25: Chris@25: Chris@25: Chris@25: Chris@25: Chris@25: Chris@25: Chris@25:
Chris@25:
Chris@25:
Chris@25: Sample data Chris@25:
Chris@25: var data = new ComplexArray(128)
Chris@25: data.map(function(value, i, n) {
Chris@25:   value.real = (i > n/3 && i < 2*n/3) ? 1 : 0
Chris@25: })
Chris@25:       
Chris@25:
Chris@25:
Chris@25:
Chris@25:
Chris@25:
Chris@25: Transform (in place):
Chris@25: Chris@25: data.FFT() Chris@25: Chris@25:
Chris@25:
Chris@25:
Chris@25:
Chris@25:
Chris@25: Simple low pass filter: Chris@25:
Chris@25: data.map(function(freq, i, n) {
Chris@25:   if (i > n/5 && i < 4*n/5) {
Chris@25:     freq.real = 0
Chris@25:     freq.imag = 0
Chris@25:   }
Chris@25: })
Chris@25:       
Chris@25:
Chris@25:
Chris@25:
Chris@25:
Chris@25:
Chris@25: Transform back:
Chris@25: Chris@25: data.InvFFT() Chris@25: Chris@25:
Chris@25:
Chris@25:
Chris@25:
Chris@25:
Chris@25: ... or all in one step Chris@25:
Chris@25: data.frequencyMap(function(freq, i, n) {
Chris@25:   if (i > n/5 && i < 4*n/5) {
Chris@25:     freq.real = 0
Chris@25:     freq.imag = 0
Chris@25:   }
Chris@25: })
Chris@25:       
Chris@25:
Chris@25:
Chris@25: Chris@25: Chris@25: