コード例 #1
0
        //----------------------------------------------------------------------------------------------
        public ComplexMatrix GetInverseFourierTransform2D(ComplexMatrix fourierTransform2D)
        {
            bool isMatrixSizeCorrect =
                MathHelper.IsPowerOfTwo(fourierTransform2D.RowCount) &&
                MathHelper.IsPowerOfTwo(fourierTransform2D.ColumnCount);

            if (!isMatrixSizeCorrect)
            {
                throw new FourierTransformException();
            }

            ComplexMatrix resultMatrix =
                new ComplexMatrix(fourierTransform2D.RowCount, fourierTransform2D.ColumnCount);

            //Обработка строк
            for (int row = 0; row < fourierTransform2D.RowCount; row++)
            {
                Complex[] complexData             = fourierTransform2D.GetRow(row);
                Complex[] inverseFourierTransform = this.GetInverseFourierTransform(complexData);
                resultMatrix.SetRowData(row, inverseFourierTransform);
            }


            //Обработка столбцов
            for (int column = 0; column < fourierTransform2D.ColumnCount; column++)
            {
                Complex[] complexData             = resultMatrix.GetColumn(column);
                Complex[] inverseFourierTransform = this.GetInverseFourierTransform(complexData);
                resultMatrix.SetColumnData(column, inverseFourierTransform);
            }


            return(resultMatrix);
        }