I need to generate a signal from the next formula:
I am using next code for that purpose:
function genArray<TOut>(size: number, generator: (i: number) => TOut): TOut[] {
const res = [];
for(let i = 0; i<size; ++i) {
res.push(generator(i));
}
return res;
}
getSignal(N = 512) {
const b1 = 0.01;
const b2 = 100;
const signal = genArray(
N,
i => {
const a = b1 * Math.sin(2 * Math.PI * i / N);
let b = 0;
for (let j = 50; j <= 70; ++j) {
b += Math.pow(-1, Math.random()) * b2 * Math.sin(2 * Math.PI * j * i / N);
}
console.log(a, b);
return a + b;
}
);
return signal;
}
That line: Math.pow(-1, Math.random())
returns NaN, because:
Is it possible to handle such case in JS?
PS. Sorry, if it is obvious, I don't know how can I google that.