FFT
thanks Michi
by Nayana Das
HTML
<script src="https://rawgit.com/corbanbrook/dsp.js/master/dsp.js"></script>
<script src="http://dygraphs.com/1.1.0/dygraph-combined-dev.js"></script>
<div id="graph"></div>
<button onclick="Oszi()">Start</button>
<button onclick="_FFT(signal,1024,1000)">Perform FFT</button>
JavaScript
var signal = [];
var sam = 1000;
var fre = 14;
var buf = 1024;
function Oszi(){
signal = []
for (i = 0 ; i<buf; i++){
signal.push(3*Math.cos(Math.PI * 2 * i / sam * fre*2.7) +Math.sin(Math.PI * 2 * i / sam * fre));
}
plot(signal);
}
function _FFT(signal,bufferSize, samplingRate) {
var fft = new FFT(bufferSize, samplingRate);
fft.forward(signal);
var spectrum = fft.spectrum;
console.log("spectrum:"+spectrum)
plotFFT(spectrum,samplingRate);
}
function plotFFT(spectrum,samplingRate) {
var data = [];
var frequencyIncrement = parseFloat(samplingRate)/2/spectrum.length;
for (var j = 0; j < spectrum.length; j++){
data.push([frequencyIncrement*j,spectrum[j]]);
}
new Dygraph(document.getElementById("graph"),data);
console.log(data);
}
function plot(plotData) {
var row = [];
for (var j = 0; j < plotData.length; j++){
row.push([j,plotData[j]]);
}
console.log(row);
new Dygraph(document.getElementById("graph"),row);
}
Oszi()