Дискретное преобразование Фурье
Преобразование Фурье - это математический инструмент для изучения периодических или почти периодических функций. Хорошим примером почти периодических функций является звуковая волна, порождаемая звучанием музыкального инструмента. Давайте рассмотрим простейшее музыкальное устройство - вибрирующую струну Если "щипнуть" натянутую струну, то она начнет вибрировать и ее колебания порождают колебания воздуха вокруг струны.
В результате возникает звуковая волна, периодически распространяющаяся область высокого давления воздуха, сменяющаяся областью низкого давления. Эти волны распространяются в пространстве, удаляясь от источника звука. Для записи звука используется микрофон, имеющий внутри гибкую мембрану Сразу же как звуковая волна достигает микрофона, область высокого давления заставляет мембрану сжиматься, а низкого давления - тянет мембрану в обратном направлении. Микрофон преобразует колебания мембраны в электрический сигнал, который следует движениям мембраны. В аналоговой записи звука электрический сигнал может использоваться для намагничивания ленты, так что интенсивность магнитного поля ленты воспроизводит профиль звукового сигнала. В цифровой записи звука электрический сигнал, создаваемый микрофоном, измеряется. Измерения, проводимые с заданным временным интервалом, могут сохраняться в памяти компьютера. Например, для системы записи СD (компакт дисков) измерения проводятся с частотой 44100 Герц, что означает запись 44100 измерений в секунду Величина сигнала обычно масштабируется в интервале от-1 до 1.
Давайте вернемся к обсуждению колеблющейся струны. Колеблющаяся струна издает звук с некоторой частотой, которая называется базовой частотой . Оказывается, что струна может колебаться более сложным способом. Она может иметь состояния высокой вибрации с частотой
и так далее. На практике, колебание струны включает колебания высокой вибрации в дополнение к колебаниям с базовой частотой. В музыке,
состояния высокой вибрации, производимые музыкальным инструментом, называются обертонами. Распределение интенсивности обертонов - это то, что отличает один инструмент от другого, играющего одну и ту же ноту.
Ниже на рисунке представлена диаграмма звучания флейты, соответствующая примерно 0,01 секунды записи. Заметьте, что профиль почти периодический, - на диаграмме можно выделить 5 периодов.
Следующая диаграмма показывает спектр частот этой звуковой волны.
Поскольку это звук музыкального инструмента, играющего одну ноту, то диаграмма представляет пики, соответствующие базовой частоте (587 Нz; нота D второй октавы) и обертонам базовой частоты. Заметьте, для этого инструмента в частотном спектре отсутствует второй обертон.
Анализ частотного спектра сигнала, представленного выше, выполнен с использованием дискретного преобразования Фурье (ДПФ), которое мы намереваемся далее обсудить.
Давайте рассмотрим функцию , определенную на интервале
. Мы хотим измерить f(t) в N равноудаленных точках
с расстоянием между точками равным
. Первую точку выберем не в 0, а в середине первого интервала - в точке
. Тогда
, и так далее с общей формулой:
![t_j=\frac{(2j+1)\pi}{2N}](/sites/default/files/tex_cache/0b5f261c6f2d92e29be1923905b685d0.png)
Последняя точка будет закрывать правый конец интервала:
![t_{N-1}=\frac{(2N-1)\pi}{2N}=\pi-\frac{\pi}{2N}](/sites/default/files/tex_cache/af4c67432489c02be53cf181e2f7d42d.png)
Измеряя f(t) в этих точках получим N-компонентный вектор
![f=(f_0, f_1, f_2, \dots, f_{N-1},](/sites/default/files/tex_cache/d60407455911f4ffc191562181b7b8a6.png)
где .
Далее будем полагать, что N четно, N = 2М.
Волны будем моделировать периодическими функциями cos(t) и sin(t). С этого момента будем полагать, что аргументы тригонометрических функций измеряются в радианах. Давайте рассмотрим семейство функций:
![u_0(t) = \соs(t),\; u_1(t) = \соs(3t), \dots , u_{М_1}(t) = \cos((N - 1)t),\\
v_0(t) = \sin(t),\; v_1(t) = \sin(3t), \dots , v_{М_1}(t) = \sin((N - 1)t).](/sites/default/files/tex_cache/e87f5aaf84a5424056caa80a39adbad5.png)
Мы можем записать их в более общей форме:
![u_р(t) = \cos((2р + 1)t),\; u_p(t) = \sin((2р + 1)t),\; р = 0,1, \dots ,М - 1.](/sites/default/files/tex_cache/7283f030bc1f0ebb2ef7b2fa2653fff8.png)
Используя измерения в ряде точек, можно перейти от непрерывных функций к их дискретным аналогам, создавая для каждой функции N-компонентный вектор:
![\tilde u_0=(\cos(t_0), \cos(t_1), \cos(t_2),\dots, \cos(t_{N-1)),\\
\tilde u_1=(\cos(3t_0), \cos(3t_1), \cos(3t_2),\dots, \cos(3t_{N-1)),\\
\tilde u_2=(\cos(5t_0), \cos(5t_1), \cos(5t_2),\dots, \cos(5t_{N-1)),](/sites/default/files/tex_cache/761cbb128efcb00f8a285d009a70b07a.png)
Аналогично, выполним эти действия и для функции .
Подставляя значения для точек , получим:
![\tilde u_p=\left (\cos \left( \frac{(2p+1)\pi}{2N} \right), \cos \left (\frac{(2p+1)3\pi}{2N} \right ), \dots, \cos \left (\frac{(2p+1)(2N-1)\pi}{2N} \right ) \right)\\
\tilde v_p=\left (\sin \left( \frac{(2p+1)\pi}{2N} \right), \sin \left (\frac{(2p+1)3\pi}{2N} \right ), \dots, \sin \left (\frac{(2p+1)(2N-1)\pi}{2N} \right ) \right)](/sites/default/files/tex_cache/be7f74460e108c64a95f90ded7983596.png)
Здесь р принимает значения р = 0,1,..., М - 1.
В результате мы получили семейство из N векторов в . Давайте изучим их свойства.
Теорема. Вектора ортогональны друг другу и формируют базис в
Прежде чем доказывать теорему, вспомним некоторые тригонометрические тождества.
При рассмотрении свойств тригонометрических функций важно все время помнить, что - это Х-координата точки единичного круга, соответствующая углу
, в то время как
- это Y-координата той же точки. Из этого определения непосредственно следуют следующие свойства:
![\cos(-\аlpha) = \соs \аlpha, \; \sin(-\alpha) = - \sin \аlpha.](/sites/default/files/tex_cache/d0d313dfbb3b727e5560750677fdc394.png)
Только две тригонометрические формулы следует непосредственно держать в памяти:
![\cos(\аlpha + \beta) = \cos \аlpha \cos \beta - \sin \аlpha \sin \beta,\\
\sin(\аlpha + \beta) = \sin \аlpha \cos \beta + \cos \аlpha \sin \beta.](/sites/default/files/tex_cache/4dba97e4488d7e2c0929990b3e4db947.png)
Все остальные тождества непосредственно выводимы. Изменяя знак в предыдущих формулах, получим:
![\cos(\аlpha - \beta) = \cos \аlpha \cos \beta + \sin \аlpha \sin \beta,\\
\sin(\аlpha - \beta) = \sin \аlpha \cos \beta - \cos \аlpha \sin \beta.](/sites/default/files/tex_cache/8b1970eda0784d06b23db0e2efd1b4bf.png)
Комбинируя формулы, мы получим:
![\cos(\аlpha + \beta) + \cos(\аlpha - \beta) = 2 \cos \аlpha \cos \beta,\\
\cos(\аlpha - \beta)- \cos(\аlpha + \beta) = 2 \sin \аlpha \sin \beta,\\
\sin(\аlpha + \beta) + \sin(\аlpha -\beta) = 2 \sin \аlpha \cos \beta.](/sites/default/files/tex_cache/931f073a93c561c2d95ffda242f878c1.png)
Нам понадобится следующее
Утверждение. Предположим . Тогда
![\cos(\аlpha) + \cos(3\аlpha) + \cos(5\аlpha) + \dots + \соs((2N - 1)\аlpha) =\frac{\sin(2N\alpha)}{2 \sin \аlpha},\\
\sin(\аlpha) + \sin(3\аlpha) + \sin(5\аlpha) + \dots + \sin((2N -1)\аlpha) =\frac{1 - \cos(2N\alpha)}{2 \sin \аlpha}](/sites/default/files/tex_cache/bfce3b23bf966c3eb541a89e520926e8.png)
Для доказательства первого тождества нашего утверждения умножим его слева на и применим формулу для
![2 \sin \аlpha \cos(\аlpha) + 2 \sin \аlpha \соs (3\аlpha) + 2 \sin \аlpha \cos (5\аlpha)+\dots + 2 \sin \alpha \cos((2N -1)\аlpha)\\
= (\sin(2\аlpha) - \sin(0)) + (\sin(4\аlpha) - \sin(2\аlpha)) + (\sin(6\аlpha) - \sin(4\аlpha))+\dots+ (\sin(2N\alpha)-\sin((2N-2)\аlpha)).](/sites/default/files/tex_cache/91b56e3e7b69d7b1d4e488914e8d1498.png)
Большинство слагаемых в формуле будут взаимно уничтожаться, останется только . Разделив обе стороны на
, получим первое тождество.
Доказательство второго тождества остается в качестве упражнения.
Доказательство теоремы. Для доказательства нам нужно вычислить скалярное произведение векторов нашего семейства:
![\tilde u_p*\tilde u_s=\sum_{j=1}^{N-1}\cos \left (\frac{(2p+1)(2j+1)\pi}{2N}\right ) \cos\left ( \frac{(2s+1)(2j+1)\pi}{2N} \right )](/sites/default/files/tex_cache/8e7b3f97b448dcdd2cf6aaa1b9bb8b7b.png)
Применяя формулу для произведения косинусов, получим:
![\frac12\sum_{j=0}^{N-1}\cos \left ( \frac{(2p+2s+2)(2j+1)\pi}{2N} \right )+\cos \left ( \frac{(2p-2s)(2j+1)\pi}{2N} \right )](/sites/default/files/tex_cache/fa0e302861964bc66a91adda05a71c9c.png)
Далее, используя предыдущее утверждение вычислим сумму:
![\frac12 \sum_{j=0}^{N-1}\cos\left ( \frac{(p+s+1)(2j+1)\pi}{N}\right) =\frac{\sin\left (\frac{(p+s+1)\pi}{N}\right )}{4\sin \left (\frac{(p+s+1)\pi}{N}\right )}](/sites/default/files/tex_cache/297162084e4343b0542f54553122c136.png)
Эти вычисления справедливы при условии, что синус в знаменателе не равен нулю. Это так, поскольку , откуда следует, что
, следовательно, sin в знаменателе не равен нулю.
Вычисляя вторую сумму, получим:
![\frac 12 \sum_{j=0}^{N-1} \cos \left(\frac{(p-s)(2j+1)\pi}{N}\right )=\frac{\sin\left ( \frac{(p-s)2N\pi}{N}\right )}{4\sin\left (\frac{(p-s)\pi}{N}\right)}](/sites/default/files/tex_cache/8036bce6fcdede7243478292c848c8d3.png)
Эти вычисления также справедливы при условии, что синус в знаменателе не равен нулю. Здесь знаменатель превращается в ноль только тогда, когда р = s. Заметьте, что оба числителя в этом случае также равны нулю. Следовательно, когда скалярное произведение
равно нулю. Если р = s, то первая сумма по-прежнему равна нулю, а во второй все косинусы равны 1, так что скалярное произведение векторов равно N/2. Давайте теперь вычислим скалярное произведение
![\tilde u_p*\tilde v_s=\sum_{j=0}^{N-1}\cos \left(\frac{(2p+1)(2j+1)\pi}{2N}\right )\sin \left (\frac{(2s+1)(2j+1)\pi}{2N}\right )](/sites/default/files/tex_cache/59a64b44588a4debdd90a5fd763a8519.png)