Skip to content

Instantly share code, notes, and snippets.

@htmlfarmer
Last active August 30, 2015 01:14
Show Gist options
  • Save htmlfarmer/5a98ad7d0f4ac3cf7a76 to your computer and use it in GitHub Desktop.
Save htmlfarmer/5a98ad7d0f4ac3cf7a76 to your computer and use it in GitHub Desktop.
Discrete Fourier Transform (DFT)
var signal = [1,0,0,1,1,1,0,0,1,1,0,0,1,0,0,1,1,1,0,0,1,1,0,0,1,0,0,1,1,1,0,0,1,1,0,0,1,0,0,1,1,1,0,0,1,1,0,0]
function fourier(signal) {
var len = signal.length;
var output = new Array();
for (var k = 0; k < len; k++) {
var real = 0;
var imag = 0;
for (var n = 0; n < len; n++) {
real += signal[n] * Math.cos( - 2 * Math.PI * k * n / len);
imag += signal[n] * Math.sin( - 2 * Math.PI * k * n / len);
}
output.push([real,imag])
}
return output;
}
fourier(data).forEach(function (element, n)
{
var x_axis = n; //Math.round(n/(2*Math.PI))
var y_axis = Math.round(element[0]); //Math.floor(Math.sqrt(element[0]*element[0]+element[1]*element[1]));
console.log('[' + x_axis + '] ' + y_axis);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment