/// <summary> /// Backward short-time Fourier Transform. /// </summary> /// <param name="B">Array</param> /// <returns>Array</returns> public Complex32[] Backward(Complex32[] B) { int N = B.Length, i, j; Complex32[] A = new Complex32[N]; int frame = coefs.Length; for (i = 0; i < N; i += frame) { Complex32[] data = new Complex32[frame]; for (j = 0; j < frame; j++) { data[j] = B[i + j]; } data = FFT.Backward(data); for (j = 0; j < frame; j++) { A[i + j] = data[j] / coefs[Maths.Mod(i - frame / 2, frame)]; } } return(A); }