Лабораторная работа №1. Дискретное преобразование Фурье
Цель: Изучение дискретного преобразования Фурье (ДПФ) одномерного дискретного сигнала. Применение теоремы Котельникова для восстановления непрерывного одномерного сигнала по его дискретным отсчетам. Программная реализация ДПФ и ОДПФ для одномерного сигнала.
Программное обеспечение: MS Visual Studio, OpenCV 2.4.0, scilab-5.3.3.
Теория
Сущность цифровой обработки состоит в том, что физический сигнал (напряжение, ток и т.д.) преобразуется в последовательность чисел, которая затем подвергается математическим преобразованиям в вычислительном устройстве. Трансформированный цифровой сигнал (последовательность чисел) при необходимости может быть преобразован обратно в напряжение или ток.
Аналоговые, дискретные и цифровые сигналы
Исходный физический сигнал является непрерывной функцией времени. Такие сигналы, определенные во все моменты времени, называют аналоговыми.
Непрерывный гармонический сигнал (рис. 1) описывается выражением:
,
где А – амплитуда, f – частота в Гц, φ – начальная фаза,
ω = 2π • f– угловая частота (рад/с), T = 1/f = 2π/ω-период сигнала.
Рисунок 1 - непрерывный гармонический сигнал и его характеристики
В 1822г. французский инженер и математик Жан Батист Жозеф Фурье (1768-1830) показал, что произвольную периодическую функцию, которая в самом общем виде представляется как s(t)=Acos(ωt+φ), где А-амплитуда, ω-круговая частота и φ-начальная фаза, даже имеющую конечное число разрывов первого рода, можно представить бесконечной дискретной суммой периодических тригонометрических функций в ортонормированном базисе.
Последовательность чисел, представляющая сигнал при цифровой обработке, является дискретным рядом и не может полностью соответствовать аналоговому сигналу. Числа, составляющие последовательность, являются значениями сигнала в отдельные (дискретные) моменты времени и называются отсчетами сигнала. Как правило, отсчеты берутся через равные промежутки времени , называемые периодом (или интервалом, шагом) дискретизации. Величина, обратная периоду дискретизации, называется частотой дискретизации: . Соответствующая ей круговая частота определяется следующим образом: . Ясно, что в общем случае представление сигнала набором дискретных отсчетов приводит к потере информации, так как ничего неизвестно о поведении сигнала в промежутках между отсчетами. Однако существует класс аналоговых сигналов, для которых такой потери информации не происходит и которые могут быть точно восстановлены по значениям своих дискретных отсчетов.
Процесс преобразования аналогового сигнала в последовательность отсчетов называется дискретизацией, а результат такого преобразования – дискретным сигналом.
При обработке сигнала в вычислительных устройствах его отсчеты представляются в виде двоичных чисел, имеющих ограниченное число отсчетов. Вследствие этого отсчеты могут принимать лишь конечное множество значений и, следовательно, при представлении сигнала неизбежно происходит его округление. Процесс преобразования отсчетов сигнала в числа называется квантованием по уровню, а возникающие при этом ошибки округления – ошибками (или шумами) квантования.
Сигнал, дискретный во времени, но не квантованный по уровню, называется дискретным сигналом. Сигнал, дискретный во времени и квантованный по уровню, называют цифровым сигналом. Разницу между аналоговыми, дискретными и цифровыми сигналами иллюстрирует рис.2.
Рисунок 2 – Аналоговый (слева), дискретный (в центре) и цифровой (справа) сигналы
Преобразование Фурье. Дискретное преобразование Фурье (ДПФ)
В цифровой обработке сигналов базовой операцией является переход из временной области представления сигнала в частотную область и обратно. Для непрерывного сигнала такой переход осуществляется с использованием прямого (формула 1) и обратного (формула 2) преобразования Фурье.
(1) (2)
где - мнимая единица, ,
- частота,
- время,
- сигнал во временной области,
- сигнал в частотной области (Фурье спектр).
Для дискретного сигнала преобразование Фурье принимает вид так называемого дискретного преобразования Фурье (ДПФ) (прямое – формула 3, обратное – формула 4):
, (3)
, (4)
где - число отсчетов дискретного сигнала .
Для вычисления ДПФ используются формулы Эйлера (формула 5 и 6):
(5)
(6)
Тогда, заменяя комплексную экспоненту выражением Эйлера в формулах (3) и (4), получим:
(7)
(8)
Векторно-матричная форма дпф и одпф
В векторно-матричной форме ДПФ и ОДПФ соответствуют формулы 9 и 10 соответственно:
(9)
(10)
где и - матрицы ДПФ для прямого и обратного преобразования соответственно:
а элемент матрицы определяется как ,
- длина вектора дискретных отсчетов сигнала,
- вектор коэффициентов ДПФ.
Как следует из формулы 10 для получения матрицы из матрицы необходимо выполнить комплексное сопряжение элементов матрицы (операция комплексного сопряжения числа заключается в изменении знака у мнимой части этого числа).
Учитывая периодичность степенного ряда элемента матрицы при различных кратностях N выборок на периоде 2π можно записать: , где k mod N есть остаток от деления k на N. Тогда для N=4 матрица примет вид:
Комплексные числа
Сигналы, с которыми приходится иметь дело в ЦОС, обычно имеют значения из области действительных чисел. Однако математические выражения для ряда Фурье в комплексной форме намного проще и на практике постоянно приходится иметь дело с комплексными числами.
Число вида z=a+ib называется комплексным, если в нём a и b любые действительные числа, а - мнимая единица. Комплексное число включает в себя действительную часть a=Re(z) и мнимую часть b=Im(z). На плоскости комплексное число удобно представить на окружности с радиусом z, имеющей декартовы координаты: действительную ось 0x и мнимую ось 0y.
Значение модуля комплексного числа представляется как , а аргумент – это угол между вектором z и осью абсцис: φ=arctg(b/a). Два числа z=a+ib и z=a-ib называются комплексно-сопряженными. Ось абсцисс является действительной, а ось ординат – мнимой осью. Размещение комплексного числа в виде вектора в комплексной форме представлено на рис. 3.
Рисунок 3 - Графическое представление комплексного числа
Как видно из рис.3, комплексное число можно представить кроме алгебраической, также тригонометрической формой следующим образом:
z=a+ib=zcos φ+izsin φ=z(cos φ+isin φ)
На основании тригонометрической формы комплексного числа возможен переход к его показательной форме и формуле Эйлера.
Действия над комплексными числами
Если z1=a+bi, z2=c+di, то:
z1 + z2 = (a+bi) + (c+di) = (a+c)+(b+d)i;
z1 - z2 = (a+bi) - (c+di) = (a-c)+(b-d)i;
z1*z2 = (a+bi) *(c+di) = (ac-bd)+(ad+bc)i.
При программировании на С++ для хранения комплексных чисел можно воспользоваться стандартным в C++ STL типом complex (определённым в заголовочном файле <complex>).
Пример 1. Расчет ДПФ и ОДПФ
Найти ДПФ для дискретного сигнала, заданного дискретными отсчетами {2, -1, 1, 4}.
Решение
Подставляя исходные данные в формулу 7, найдем:
.
Аналогично находим:
; ; .
Выполним ДПФ и ОДПФ, используя векторно-матричную форму:
Матрица для N=4 имеет вид:
Тогда
Выполним ОДПФ:
Из формул (7) и (8) следует, что для нахождения одного коэффициента или отсчета необходимо выполнить операций умножения на комплексное число и столько же операций сложения. Для определения всех коэффициентов или отсчетов потребуется около вычислений. При такой вычислительной сложности обработка больших массивов данных в реальном времени является трудно решаемой задачей и предъявляет высокие требования к вычислительному устройству по быстродействию и объемам оперативной памяти. Поэтому практически применяют модификации алгоритма вычисления ДПФ.