Example #1
0
        /// <summary>
        /// 複素数がインターリーブされたデータを離散フーリエ変換します。
        /// </summary>
        /// <param name="invert">逆離散フーリエ変換を行うかの真偽値。</param>
        /// <param name="data">複素数がインターリーブされた配列。</param>
        public void TransformComplex(bool invert, double[] data)
        {
            if (data == null)
            {
                throw new ArgumentNullException("data");
            }

            if (data.Length != this.n)
            {
                throw new ArgumentOutOfRangeException("data");
            }

            FastFourier.cdft(this.n, invert, data, this.ip, this.w);

            if (invert)
            {
                double f = 2.0 / this.n;

                for (int j = 0; j < this.n; j++)
                {
                    data[j] *= f;
                }
            }
        }