Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }