Имеются две причины, по которым не могут быть использованы пары преобразований fft/ifft, обсужденные в предыдущем разделе:
· Данные могут быть комплекснозначны. Это означает, что Mathcad не может больше использовать симметрию, имеющую место в вещественном случае.
· Вектор данных может иметь размерность, отличную от 2m. Это означает, что Mathcad не может пользоваться преимуществом высокоэффективного алгоритма БПФ, используемого парой fft/ifft.
Комплексное преобразование Фурье требует следующих функций:
| cfft (A)
| Возвращает дискретное преобразование Фурье комплекснозначных вектора или матрицы. Возвращаемый массив имеет тот же самый размер, что и массив, используемый как аргумент.
|
| icfft (A)
| Возвращается обращение дискретного преобразования Фурье вектора или матрицы данных. Функция icfft — обратная к функции cfft. Подобно cfft, эта функция возвращает массив того же самого размера, что и аргумент.
|
Рисунок 3: Использование быстрых преобразований Фурье в Mathcad.
Пара преобразований cfft/icfft может работать с массивами любого размера. Однако они работают значительно быстрее, когда число строк и столбцов может быть представлено в виде произведения большого количества меньших сомножителей. Например, векторы с длиной 2m относятся к этому классу, так же как и векторы, имеющие длины, подобные 100 или 120. С другой стороны, вектор, чья длина — большое простое число, замедлит вычисление преобразования Фурье.
Функции cfft и icfft — обратные друг к другу. То есть icfft(cfft(v))=v. Рисунок 3 показывает примеры использования преобразования Фурье в Mathcad.
Когда в качестве аргумента cfft используется матрица, результат есть двумерное преобразование Фурье исходной матрицы.