public void ComputeFHT(double[] re, double[] im, out double[] output, bool overlapEnable = false) { var length = re.Length * 2; var mBitRev = FHTArrays.GetBitRevTable(length); output = new double[length]; for (var i = 0; i < length / 2; i++) { output[mBitRev[i]] = re[i] + im[i]; output[mBitRev[length - 1 - i]] = re[i] - im[i]; } ComputeFHT(ref output, length, overlapEnable); }
public double[] test() { var mBitRev = FHTArrays.GetBitRevTable(kWindowSize); double[] sinArray = new double[kWindowSize]; double omega = 2 * Math.PI * 20; for (int i = 0; i < kWindowSize; i++) { sinArray[mBitRev[i]] = Math.Sin(omega * i / 1000); } ComputeFHT(ref sinArray, kWindowSize); return(sinArray); }
public void ComputeFHT(short[] input, out double[] output, bool overlapEnable) { var length = FHTArrays.CeilingPow2(input.Length); var mBitRev = FHTArrays.GetBitRevTable(length); var mPreWindow = FHTArrays.GetPreWindow(length); output = new double[length]; for (var i = 0; i < input.Length; ++i) { output[i] = input[mBitRev[i]] * mPreWindow[mBitRev[i]]; } ComputeFHT(ref output, length, overlapEnable); }