Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие (MathCad).doc
Скачиваний:
95
Добавлен:
27.11.2019
Размер:
3.98 Mб
Скачать

2.7.4. Быстрые прямое и обратное преобразования Фурье()

Переход от некоторой функции f(t) к параметрам ее ряда Фурье (амплитудам и фазам гармоник) называется прямым преобразованием Фурье, а обратный переход — обратным преобразованием Фурье.

Если сигнал представлен в виде вектора дискретных значений, применяется дискретное преобразование Фурье (ДПФ), для которого, в свою очередь, существует алгоритм эффективной реализации вычислений, называемый быстрым преобразованием Фурье (БПФ, или FFT — Fast Fourier Transform). Увы, сложность этого процесса не позволяет детально описать его в настоящей книге. Поэтому ограничимся описанием встроенных функций, реализующих прямое и обратное БПФ в системе Mathcad, которая предоставляет возможность проводить указанные преобразования для данных в виде векторов с действительными и комплексными числами.

Функция fft(v) системы Mathcad выполняет БПФ для данных, представленных действительными числами — значениями исходного вектора v. Однако при этом вектор v должен иметь 2m составляющих, где m — целое число. В противном случае выводится сообщение об ошибке — неверном размере вектора. Если число элементов вектора v все же отличается от целой степени двух, то его можно дополнить нулями до этой величины.

Элементы вектора, возвращаемого функцией fft(v), соответствуют формуле

.

Здесь n — число элементов вектора v, i — мнимая единица, k — индекс суммирования (от 0 до n – 1) и j — номер гармоники (от 0 до n/2). Эти элементы вектора соответствуют следующим частотам:

.

Здесь fs — частота квантования сигнала, который подвергается БПФ.

Элементы вектора, возвращаемого функцией fft(v), — это в общем случае комплексные числа, даже если сигнал представлен вещественными отсчетами.

Функция ifft(v) реализует обратное (инверсное) преобразование Фурье для вектора v с комплексными элементами. Вектор v здесь должен иметь 1 + 2m+1 элементов. В противном случае выдается сообщение об ошибке. Функция ifft(v) вначале создает вектор w, комплексно-сопряженный с v, и затем присоединяет его к вектору v. После этого вычисляется вектор d с элементами, рассчитанными по следующей формуле:

.

Функции fft(v) и ifft(v) дают точные (в пределах погрешности численных расчетов) обращения. При этом ifft(fft(v)) = v, что можно использовать для проверки преобразований.

Функция cfft(A) аналогична предыдущей функции, но реализует прямое преобразование Фурье для вектора A с комплексными элементами. Если A — матрица, реализуется двухмерное преобразование. Введение функции fft(V) обусловлено тем, что преобразование для векторов с действительными элементами реализуется по более быстрому алгоритму (БПФ) и занимает меньше времени. Кроме того, в этом случае проще ввод исходных данных.

Функция icfft(B) выполняет обратное преобразование Фурье по полному алгоритму, при котором как исходный, так и результирующий векторы или матрицы содержат элементы с комплексными значениями.

Примеры на реальное применение этих функций рассмотрены ниже и в Главе 4. Там же мы рассмотрим примеры на новые средства разложения произвольных функций - вейвлеты.