MATLAB.Exponenta
MATLAB и Simulink на русском
Технологии разработки и отладки
		сложных технических систем

MATLAB\MATLAB

В.Г.Потемкин "Справочник по MATLAB"
Анализ и обработка данных

  В оглавление книги \ К следующему разделу \ К предыдущему разделу

Преобразование Фурье

FFT, IFFT
Одномерное дискретное прямое и обратное преобразования Фурье

Синтаксис:

Y = fft(X) X = ifft(Y)
Y = fft(X, n) X = ifft(Y, n)

Описание:

Дискретные прямое и обратное преобразования Фурье для одномерного массива x длины N определяются следующим образом:

         image835.gif (821 bytes)

Функция Y = fft(X) вычисляет для массива данных X дискретное преобразование Фурье, используя FFT-алгоритм быстрого Фурье-преобразования. Если массив X двумерный, вычисляется дискретное преобразование каждого столбца.

Функция Y = fft(X, n) вычисляет n-точечное дискретное преобразование Фурье. Если length(X) < n, то недостающие строки массива X заполняются нулями; если length(X) > n, то лишние строки удаляются.

Функция X = ifft(Y) вычисляет обратное преобразование Фурье для массива Y.

Функция X = ifft(Y, n) вычисляет n-точечное обратное преобразование Фурье для массива Y.

Примеры:

Основное назначение преобразования Фурье - выделить частоты регулярных составляющих сигнала, зашумленного помехами. Рассмотрим данные, поступающие с частотой 1000 Гц. Сформируем сигнал, содержащий регулярные составляющие с частотами 50 Гц и 120 Гц и случайную аддитивную компоненту с нулевым средним.

             t = 0:0.001:0.6;
             x = sin(2 * pi * 50 * t) + sin(2 * pi * 120 * t);
             y = x + 2 * randn(size(t));
             plot(y(1:50)), grid

На рис. а показан этот сигнал. Глядя на него, трудно сказать, каковы частоты его регулярных составляющих. Реализуя одномерное преобразование Фурье этого сигнала на основе 512 точек и построив график спектральной плотности (рис. б), можно выделить две частоты, на которых амплитуда спектра максимальна. Это частоты 120 и 50 Гц.

              Y = fft(y, 512);
              Pyy = Y.*conj(Y)/512;
              f = 1000 * (0:255)/512;
              figure(2), plot(f, Pyy(1:256)), grid

image836.gif (3013 bytes) image837.gif (2819 bytes)
а) б)

Алгоритм:

Если длина последовательности входных данных является степенью числа 2, то применяется алгоритм быстрого преобразования Фурье с основанием 2, имеющий максимальную производительность. Этот алгоритм оптимизирован для работы с действительными данными; если данные комплексные, то реализуется комплексное преобразование Фурье. Эффективность первого на 40 % выше второго.

Если длина входной последовательности не является степенью числа 2, то применяется преобразование со смешанными основаниями, которые определяются как простые множители длины входной последовательности, которая при необходимости подвергается усечению.

Время расчета существенно зависит от значения длины последовательности. Если значение длины точно разлагается на простые множители, то вычисления для такой последовательности выполняются достаточно быстро; если же не все множители оказываются простыми, и даже их будет меньше, то время вычисления существенно возрастает.

Если сравнивать эффективность вычислений, то преобразование Фурье с основанием 2 действительной последовательности из 4096 точек занимает 2.1 с, а комплексной - 3.7 с. Обычное преобразование Фурье для последовательности из 4096 точек занимает 7 с, а для последовательности из 4098 точек - 58 с.

Сопутствующие функции: FFT2, IFFT2, FFTSHIFT, Signal Processing Toolbox [1].

Ссылки:

1. Signal Processing Toolbox User’s Guide. Natick: The MathWorks, Inc., 1993.

  В оглавление книги \ К следующему разделу \ К предыдущему разделу

 


Поиск по сайту:

Система Orphus

Яндекс.Метрика