24
Алгоритмы преобразования Фурье. Применение в цифровой обработке сигналов Северный (Арктический) Федеральный Университет им. М.В. Ломоносова, Институт математики, информационных и космических технологий Тюльпин А.А. [email protected] Архангельск – 2013

Алгоритмы преобразования Фурье. Применение в ЦОС

Embed Size (px)

DESCRIPTION

Доклад был сделал на одном из семинаров в Северном (Арктическом) Федеральном Университете

Citation preview

Page 1: Алгоритмы преобразования Фурье. Применение в ЦОС

Алгоритмы преобразования Фурье. Применениев цифровой обработке сигналов

Северный (Арктический) Федеральный Университет им. М.В.Ломоносова, Институт математики, информационных и космических

технологий

Тюльпин А.А[email protected]

Архангельск – 2013

Page 2: Алгоритмы преобразования Фурье. Применение в ЦОС

Часть I. Математический аппарат

Page 3: Алгоритмы преобразования Фурье. Применение в ЦОС

Тригонометрический ряд Фурье

Тригонометрическим рядом Фурье периодической функцииf(x), имеющей период T называется ряд

a02

+

∞∑k=1

(ak coskx

T+ bk sin

kx

T),

где

a0 =2

T

T/2∫−T/2

f(x)dx,

an =2

T

T/2∫−T/2

f(x) cos(kx)dx,

bn =2

T

T/2∫−T/2

f(x) sin(kx)dx

Page 4: Алгоритмы преобразования Фурье. Применение в ЦОС

Разложение в комплексный ряд Фурье

В более общем виде рядом Фурье элемента гильбертовапространства называется разложение этого элемента поортогональному базису. Существует множество системортогональных функций: Уолша, Лагера, Котельникова и др. Впространстве L2[a, b] одной из таких систем является ситемафункций

{e−ikx

∣∣ k ∈ Z}. Разложение функции f(x) в ряд

Фурье по данной системе будет иметь следующий вид:

∞∑k=−∞

Cke−ikx

где

Ck =1

T

T/2∫−T/2

f(x)e−i2πkxT dx — комплексный интеграл Фурье

Page 5: Алгоритмы преобразования Фурье. Применение в ЦОС

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

Преобразованием Фурье будем называть операцию,сопоставляющуюю функции f(x) функцию f̃(ω),описывающую коэффициенты разложения f(x) в ряд Фурье:

f̃(ω) =

∞∫−∞

f(x)e−iωxdx

Обратным преобразованием Фурье будем называть операцию,обращающую преобразование Фурье:

f(x) =1√2π

∞∫−∞

f̃(ω)eiωxdω

Page 6: Алгоритмы преобразования Фурье. Применение в ЦОС

Часть II. Применение преобразования Фурье в цифровойобработке сигналов

Page 7: Алгоритмы преобразования Фурье. Применение в ЦОС

Разложение сигнала на гармонические колебания

t = 1s, df = 1000Hz, f = 10Hz

x(t) = cos(2πft)+cos(2π(3f)t)+1.2 cos(2π(4.8f)t)+0.3 cos(2π(20f)t)

0.0 0.2 0.4 0.6 0.8 1.0Time [s]

432101234

Ampl

itude

0 200 400 600 800 1000Frequency [Hz]

0.00.20.40.60.81.01.21.4

Ampl

itude

Page 8: Алгоритмы преобразования Фурье. Применение в ЦОС

Свертка функций

Свертка – операция в функциональном анализе, показывающаясхожесть одной функции с отраженной и сдвинутой копиейдругой. На рисунке представлен пример сверки двухпрямоугольных импульсов:

Page 9: Алгоритмы преобразования Фурье. Применение в ЦОС

Вычисление свертки

Свертка сигналов во временной области:

(x ∗ h)(t) =∞∫−∞

x(τ)h(t− τ)dτ

Пусть X(ω) и H(ω) – образы сигналов x(t) и h(t)соответственно. Тогда преобразование Фурье свертки данныхсигналов можно вычислить по формуле:

∞∫−∞

(x ∗ h)(t)e−iωtdt = X(ω) ·H(ω)

На основании приведенных выше формул следует, что:

(x ∗ h)(t) = 1√2π

∞∫−∞

X(ω) ·H(ω)eiωxdω

Page 10: Алгоритмы преобразования Фурье. Применение в ЦОС

Цифровая фильтрация

0 200 400 600 800 10000.5

0.0

0.5

1.0

1.5 Spectrum of filter

0 10 20 30 40 501.51.00.50.00.51.01.52.0 Filter operator

0 200 400 600 800 10000.00.10.20.30.40.50.60.7 Gibbs phenomen

Page 11: Алгоритмы преобразования Фурье. Применение в ЦОС

Часть III. Алгоритмы вычисления преобразования Фурье.Быстрая свертка

Page 12: Алгоритмы преобразования Фурье. Применение в ЦОС

Дискретные сигналы

Дискретизация сигнала по времени – процедура, состоящаяв замене несчетного множества его значений их счетным(дискретным) множеством, которое содержит информацию означениях непрерывного сигнала в определенные моментывремени.

Page 13: Алгоритмы преобразования Фурье. Применение в ЦОС

Выбор частоты дискретизации

Теорема Котельникова-Найквиста-Шеннона

Непрерывный сигнал x(t) с ограниченным спектром можноточно восстановить (интерполировать) по его отсчетам x(n·dT ),взятым через интервалы dT =

1

2F, где F – верхняя частота

спектра сигнала.

Page 14: Алгоритмы преобразования Фурье. Применение в ЦОС

Дискретное преобразование Фурье (ДПФ)

Обозначения:xn – значение сигнала в момент времени tnX(ωk) = Xk – значение спектра сигнала в точке ωkN – количество отсчетовωk = 2πk

fk – k-я частота спектраj – мнимая единица

Xk =

N−1∑n=0

xne−jωknN

xn =1

N

N−1∑k=0

Xkejωkn

N

Page 15: Алгоритмы преобразования Фурье. Применение в ЦОС

Вычислительная сложность ДПФ

Пусть {k ∈ 0, N − 1} – отсчеты спектра сигнала x(t). Тогда длявычисления как прямого, так и обратного преобразованияФурье потребуется O(n2) операций:

def DFT(x, df):X = zeros(df,dtype = np.complex)N = len(x)for k in xrange(df):

for n in xrange(N):X[k] += x[n] * np.exp(-1j * 2 * np.pi * k * n / N)

return X

def IDFT(X):N = len(X)x = zeros(N,dtype = np.complex)for n in xrange(N):

for k in xrange(N):x[n] += X[k] * np.exp(1j * 2 * np.pi * k * n / N)

x[n] /= Nreturn x

Page 16: Алгоритмы преобразования Фурье. Применение в ЦОС

Введение в быстрое преобразование Фурье (БПФ)

Виды БПФ:БПФ с прореживанием по частоте (DIF FFT)БПФ с прореживанием по времени (DIT FFT)

Первая программная реализация алгоритма БПФ былаосуществлена в начале 60-х годов XX века Джоном Кули ввычислительном центре IBM под руководством Джона Тьюки,а в 1965 году ими же была опубликована статья, посвященнаяалгоритму быстрого преобразования Фурье (Cooley–TukeyFFT).

Page 17: Алгоритмы преобразования Фурье. Применение в ЦОС

БПФ. Основная идея

Основная идея БПФ состоит в разбиении спектра на 2 части, ивычислении БПФ уже для каждой из частей размерности N/2.

Page 18: Алгоритмы преобразования Фурье. Применение в ЦОС

БПФ с прореживанием по времени

Рассмотрим один из алгоритмов вычиcления преобразованияФурье последовательностей отсчетов длины N = 2l, l ∈ R заO(N log2N) операций – алгоритм прореживания по времени.Обозначим Wnk

N = e−jn2πk

N . Разобьем последовательностьотсчетов сигнала на четные и нечетные:

Xk =

N−1∑n=0

xn ·WnkN =

N/2−1∑n=0

x2n ·W 2nkN +

+

N/2−1∑n=0

x2n+1 ·W (2n+1)kN =

N/2−1∑n=0

x2n ·WnkN/2︸ ︷︷ ︸

X0(ωk)

+

+W kN

N/2−1∑n=0

x2n+1 ·WnkN/2︸ ︷︷ ︸

X1(ωk)

= X0(ωk) +W kNX1(ωk)

Page 19: Алгоритмы преобразования Фурье. Применение в ЦОС

БПФ с прореживанием по времени

Рассмотрим разбиение спектра на две части:

X = {Xk|k = 0, N − 1} =

= {Xm|m = 0, N/2− 1}⋃{Xr|r = N/2, N − 1} =

= {Xm|m = 0, N/2− 1}⋃{Xr+N/2|r = 0, N/2− 1}

Вычислим вторую половину спектра:

Xk+N/2 =

N/2−1∑n=0

x2n ·Wn(k+N/2)N/2 +

+Wk+N/2N

N/2−1∑n=0

x2n+1 ·Wn(k+N/2)N/2

Page 20: Алгоритмы преобразования Фурье. Применение в ЦОС

БПФ с прореживанием по времени

Рассмотрим некоторые особенности коэффициентов WnkN

Wn(k+N/2)N/2 =W

nN/2N/2 ·W

nkN/2

WnN/2N/2 = e

−j2πnN/2N/2 = e−j2πn = cos(−2πn)− j sin(−2πn) = 1

Получаем:W

n(k+N/2)N/2 =Wnk

N/2

Также, стоит отметить, что

Wk+N/2N = e

−j2πN2N W k

N = −W kN

Page 21: Алгоритмы преобразования Фурье. Применение в ЦОС

БПФ с прореживанием по времени

Для первой половины спектра:

Xk = X0(ωk) +W kNX1(ωk)

Для второй половины спектра:

Xk+N/2 = X0(ωk)−W kNX1(ωk)

def W(n, N): return np.exp(-1j * 2 * np.pi * n/N) def fft(x): N = len(x) if N <= 1: return x even = fft(x[0::2]) odd = fft(x[1::2]) return [even[n] + W(n, N) * odd[n] for n in xrange(N/2)] + \ [even[n] - W(n, N) * odd[n] for n in xrange(N/2)]

Page 22: Алгоритмы преобразования Фурье. Применение в ЦОС

Литература

A. Oppenheim, R. Schafer. Digital Signal ProcessingL. Franks. Signal theoryH. Nussbaumer. Fast Fourier Transform and ConvolutionAlgorithmsE. Titchmarsh. Introduction to the Theory of FourierIntegralsE. Chu, A. George. Inside the FFT Black Box: Serial andParallel Fast Fourier Transform AlgorithmsА. Н. Колмогоров, С.В. Фомин. Элементы теориифункций и функционального анализаСайт профессора Давыдова – http://prodav.narod.ru/О. В. Бесов Тригонометрические ряды ФурьеСайт http://dsplib.ru/

Page 23: Алгоритмы преобразования Фурье. Применение в ЦОС

Спасибо за внимание!

Page 24: Алгоритмы преобразования Фурье. Применение в ЦОС

Алгоритмы преобразования Фурье. Применениев цифровой обработке сигналов

Северный (Арктический) Федеральный Университет им. М.В.Ломоносова, Институт математики, информационных и космических

технологий

Тюльпин А.А[email protected]

Архангельск – 2013