//---------------------------------------------------------------------------------------------- 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); }