spectrum = {
const { amp } = form,
fftTanh = [],
fftSignal = [],
scale = 1 / signal.length,
neq = fs / 2;
fft.realTransform(
fftTanh,
signal.map((d) => d.tanh * scale)
);
fft.completeSpectrum(fftTanh);
fft.realTransform(
fftSignal,
signal.map((d) => d.signal * scale)
);
fft.completeSpectrum(fftSignal);
const output = [];
var Omega, Freq;
for (let i = 0; i < fft.size; ++i) {
Omega = (Math.PI * i) / fft.size;
Freq = (fs * i) / fft.size;
Freq = Freq < neq ? Freq : Freq - fs;
[
{ type: "tanh", part: "real", value: fftTanh[i * 2] },
{ type: "tanh", part: "imag", value: fftTanh[i * 2 + 1] },
{ type: "signal", part: "real", value: fftSignal[i * 2] },
{ type: "signal", part: "imag", value: fftSignal[i * 2 + 1] },
{
type: "diff",
part: "real",
value: fftTanh[i * 2] - fftSignal[i * 2] / (amp > 1 ? amp : 1)
},
{
type: "diff",
part: "imag",
value: fftTanh[i * 2 + 1] - fftSignal[i * 2 + 1] / (amp > 1 ? amp : 1)
}
].map((obj) => {
output.push(Object.assign({ Omega, Freq }, obj));
});
}
return output;
}