В. Стешенко, Р. Загидуллин, С. Карутин
Анализ сигналов и систем. Пакет SystemView компании Elanix.
Занятие 6. Введение в спектральный анализ
Рассмотрим основные моменты представления аналоговых сигналов в цифровой форме и построение их спектров.
Преобразование аналогового сигнала x(t) в цифровую форму (последовательность битов) осуществляется в два этапа: дискретизация по времени и квантование по уровню. Дискретизация по времени (или дискретизация) представляет собой процедуру взятия мгновенных значений сигнала x(t) через равные промежутки времени Т. Мгновенные значения х(nТ) называются выборками, или отсчётами, время T - периодом дискретизации, n указывает порядковый номер отсчёта. Ясно, что чем чаще брать отсчёты, то есть чем меньше период дискретизации Т, тем точнее последовательность отсчётов х(nТ) будет отображать исходный сигнал x(t). Период дискретизации Т определяет частоту дискретизации:
fД = 1/T; T = 1/fД.
Откуда, чем меньше Т, тем выше fД. С другой стороны, чем выше частота дискретизации, тем труднее вычислителю выполнять большое количество операций над отсчётами в темпе их поступления на переработку и тем сложнее должно быть его устройство.
Таким образом, точность представления сигнала требует увеличивать fД, а стремление сделать вычислитель как можно более простым приводит к желанию понизить fД. Однако существует ограничение на минимальное значение fД для полного восстановления непрерывного сигнала по его отсчётам х(nТ). Для этого необходимо и достаточно, чтобы частота дискретизации fД была, как минимум, в два раза больше наивысшей частоты F в спектре передаваемого сигнала x(f), то есть
fД F; T ½·F.
Квантование отсчётов по уровням производится с целью формирования последовательности чисел: весь диапазон изменения величины отсчётов разбивается на некоторое количество дискретных уровней, и каждому отсчёту по определённому правилу присваивается значение одного из двух ближайших уровней квантования, между которыми оказывается данный отсчёт. В результате получается последовательность чисел х(nТ) = х(n), представляемых в двоичном коде. Количество уровней определяется разрядностью b АЦП (аналого-цифрового преобразователя); так, если b = 3, всего можно иметь k = 2b = 2³ = 8 уровней квантования, а минимальное и максимальное значения отсчётов равны соответственно 0 <=> 000 и 7 <=> 111. Ясно, что квантованный отсчёт отличается от выборки х(nТ). Это отличие выражается ошибкой квантования, которая тем меньше, чем больше b.
В результате оцифровки сигнала мы получаем N b-бит отсчётов.
Построение спектра сигнала подразумевает разложение в ряд Фурье, а так как мы имеем дело с конечными во времени сигналами, то и осуществление преобразования Фурье. Это преобразование является достаточно сложным и требующим большого количества вычислений. Поэтому при цифровой обработке сигналов преобразование Фурье в чистом виде практически не применяют. Вместо него используют так называемое Быстрое преобразование Фурье (БПФ) или Fast Fourier Transform (FFT).
FFT работает с комплексными числами и размерами преобразований, представляющими из себя степень двойки (128, ..., 1024, 2048 и так далее). Не стоит однако думать, что FFT - это что-то другое, нежели разложение Фурье. Это абсолютно то же самое, просто в сотни раз быстрее. Комплексные коэффициенты - это не что иное, как просто коэффициенты перед Cos() – Im[n], а действительные - перед Sin() - Re[n]. В большинстве современных алгоритмов применяется FFT, поэтому это название прочно закрепилось за всеми алгоритмами, которые раскладывают сигнал на частоты.
Это преобразование переводит N последовательных значений амплитуды сигнала в N/2 + 1 пар коэффициентов Re[n], Im[n]. Смысл преобразования в том, что если сложить N/2 +1 функций
Re[n]·Sin(2nt) + Im[n]·Cos(2nt), где n = 0...N/2,
то с некоторой степенью точности получится исходная функция — N значений амплитуды. По формулам приведения можно преобразовать пару коэффициентов - амплитуд Sin() и Cos() - в другую, более полезную нам пару — амплитуду, перед Cos() A[n], и фазу этой синусоиды (косинусоиды) Ph[n].
Таким образом, можно сказать, что БПФ переводит N значений амплитуд в N/2 синусоиды (отдельные частоты) с амплитудами A[n] и фазами Ph[n], плюс ещё нулевая пара коэффициентов - просто константа (Cos() нулевой частоты).
Если вспомнить, что отсчёты были получены с какой-то частотой дискретизации fД, то можно ввести очень важное понятие — частотное разрешение dF - это шаг между частотами разложения FFT.
dF = fД/N.
В результате преобразования мы получаем разложение сигнала по частотам: 0 (константа); fД/N; 2fД/N и так далее до fД/2 (всего N/2 + 1 частот).
Теперь перейдём к свойствам этого преобразования, важным для нас.
Термин "размер преобразования" (FFT size), или просто "размер FFT" обозначает количество точек (отсчётов) исходной функции, с которыми мы работаем. То есть, для размера FFT в 1024 мы должны взять 1024 отсчёта.
Непосредственные свойства преобразования:
- В реальных приложениях можно считать, что, разложив и сложив обратно сигнал, мы никогда ничего не теряем. Это очень важное свойство.
- Разрешение по частоте зависит от размера преобразования, и составляет половину от этого размера. При FFT = 512 мы получаем в результате амплитуды и фазы 256-ти равномерно расположенных частот.
Вообще говоря, перевод сигнала в частотное представление возможен только блоками (окнами). В нашем случае - FFT блоками. Мы делим исходный сигнал на блоки и говорим: в этом блоке имеются такие-то частоты. Вернее, так: его можно получить, сложив такие-то частоты.
Это очень важно понимать: FFT раскладывает функцию не на её гармоники, а на свои гармоники.
Вывод: строго говоря, нельзя трактовать результат разложения как спектр сигнала. Разложение — это просто данные, применив к которым обратное преобразование, можно получить исходную функцию. Но при достаточно большом частотном разрешении (dF — мало) мы получаем картину, очень близкую к реальному спектру.
С полной уверенностью сказать, что мы проанализировали какой-либо фильтр и нашли его полную характеристику, мы можем лишь в том случае, если мы узнали его амплитудно-частотную характеристику (АЧХ) и фазо-частотную характеристику (ФЧХ). Способы исследования АЧХ устройства с использованием источника белого шума или генератора переменной частоты во многом неприемлемы, в первом случае, это неравномерная спектральная плотность генерируемого шума, во втором - неопределённость связи между длительностью сигнала постоянной частоты, длиной всего отрезка анализа и инертностью реакции нашего устройства. Устранить неприятные недоговорённости такого рода и количественно охарактеризовать инертность фильтра и связь между ней и допустимыми параметрами сигналов можно используя теорию переходных процессов в цепях и метод спектрального анализа. О них, собственно, и пойдёт речь.
Метод спектрального анализа в применении к радиоэлектронике состоит в замене сложной функции, описывающей какой-либо процесс суммой простых гармонических колебаний, образующих частотный спектр этой функции. Изучаемые методом спектрального анализа процессы могут быть как установившимися, так и переходными.
Переходный процесс в нашем случае - это процесс перехода системы из одного стационарного состояния в другое вследствие изменения параметров внешнего воздействия. Или, ещё более конкретизируя, будем рассматривать процесс изменения выходного сигнала при заданном изменении входного сигнала. К переходным процессам относятся также и сигналы, служащие для передачи информации. Одним из наиболее известных методов описания переходных процессов, удобных нам в данном случае, является метод преобразования Фурье.
В программе SystemView спектральный анализ удобно проводить с помощью быстрого преобразования Фурье (БПФ/FFT). Для проведения такого преобразования необходимо установить частоту дискретизации. Это ключевая величина, определяющая качество БПФ. В окне установки Системного времени (System Time) находится функция "Auto Set No. Samples". Эта функция позволяет автоматически задать число отсчётов, оптимальное для выполнения операции дискретного преобразования Фурье. Используемый в программе SystemView стандартный алгоритм быстрого преобразования Фурье будет работать оптимально, если число отсчётов будет представлять собой целую степень числа 2. При нажатии на кнопку "Set to FFT" значение в поле "No. of Samples" будет округлено вверх (или вниз) до ближайшей степени числа 2. Если конечное время наблюдения сигнала не фиксировано, то при изменении числа отсчётов изменяется и время наблюдения сигнала, при этом заданная частота дискретизации остаётся неизменной. Если же время моделирования (Stop Time – Start Time) необходимо зафиксировать (Lock), то при изменении числа отсчётов соответственно меняется и частота дискретизации. В любом случае, частоту дискретизации необходимо выбирать так, чтобы её величина теоретически была в 2 раза больше максимальной частоты в системе, практически же это отношение должно составлять не менее 10. Частотное разрешение при этом приводится в поле "Freq. Res" (рис. 1).
Рисунок 1. Задание параметров анализа
Рассмотрим вышесказанное на простом примере. Пусть имеется система из 4-х источников синусоидального напряжения с частотами 500, 1000, 1500 и 3000 Гц и с амплитудами, соответственно, 10, 15, 5 и 1 В (рис. 2).
Рисунок 2. Тестовая система
Рассмотрим FFT-анализ при разных частотах дискретизации:
- f = 4095 Гц. Число отсчётов: 4096. Частота дискретизации в 1,365 раза больше максимальной частоты системы.
Как видно, спектр определён с ошибками. В частности, осталась "незамеченной" частота 3000 Гц, зато появилась несуществующая в спектре источников частота 1100 Гц.
- f = 32767 Гц. Число отсчётов: 32768. Частота дискретизации в 10,92 раза больше максимальной частоты системы.
В этом случае качество преобразования заметно выше. Все спектральные компоненты определены правильно. Ширина максимумов при этом меньше.
Рисунок 3. Спектр сигналов при недостаточной частоте дискретизации
Рисунок 4. Спектр сигналов при правильно выбранной частоте дискретизации
В опытах используется источник сложного сигнала с большим количеством спектральных составляющих с разной амплитудой и плотностью распределения в интервале от 0,2 до 500 Гц (100 синусоидальных источников с амплитудами от 1 до 50 В и белый шум).
При построении спектра сигнала, полученного в прямоугольном окне, между "правильными" частотами (частоты) появляется большое количество слабых "посторонних". Для того, чтобы избавиться от этого эффекта, используют окна сложной конфигурацией (или домножают сигнал, выделенный в прямоугольном окне, на специальную функцию). Цель такого окна - уменьшить или исключить возможные скачки амплитуды на краях прямоугольного окна. Существует несколько видов таких окон (функций).
Рассмотрим влияние на спектр нашего сигнала разных окон.
Схема системы показана на рис. 5.
Рисунок 5. Тестирование влияния окна
Из исходного сигнала выделяются первые десять секунд, на которые накладываются разные типы окон.
Полученные спектры представлены на рис. 6.
Рисунок 6. Спектры результирующих сигналов. Красный - входной сигнал; зелёный - окно Гаусса; чёрный - окно Наттолла; синий - окно Барлетта; фиолетовый - окно Ханна; светло-коричневый - прямоугольное окно
Из рис. 6 видно, что наложение временных окон сложной формы исключает лишние частоты исходного спектра. Субъективная оценка выделяет окно Натолла как наилучшее.
На спектре одиночных окон отсутствуют ярко выраженные максимумы. На основе этого была предложена следующая модель оконной обработки сигнала: принимать сигнал в окне, записывать результат в память, затем многократно считывать из памяти и суммировать одинаковые результаты этих считываний. Аналогично для каждого последующего окна. Этим мы улучшаем частотное разрешение окон. В SystemView данную схему реализуем с помощью задержки.
Схема реализации сигнала приведена на рис. 7.
Рисунок 7. Схема реализации сигнала
Рисунок 8. Оконная обработка
Спектры одиночного окна и сигнала, полученного многократным суммированием окон, показаны на рис. 9.
Рисунок 9. Спектры результирующих сигналов. Красный - входной сигнал; зелёный - окно Гаусса; чёрный - окно Наттолла; синий - окно Барлетта; фиолетовый - окно Sin^2; светло-коричневый - прямоугольное окно; тёмно-коричневый - одиночное окно Наттолла
Как видно, ширину главного максимума мы уменьшили, но получили лишние составляющие спектра, не присутствующие в исходном сигнале. Это хорошо видно на графике на рис. 10.
Рисунок 10. Красный - входной сигнал; зелёный - окно Наттолла с применением метода задержки; чёрный - окно Наттолла
Заметим, что в SystemView при времени обработки (StopTime-StartTime), большем длительности окна, выделенное 10-секундное одиночное окно дополняется нулями до 100 секунд (это улучшает частотное разрешение FFT), что на практике достигается введением отдельного блока. При размножении одиночного окна на все 100 с получаем просто дискретизацию спектра одиночного окна, дополненного нулями, что может ввести в заблуждение наличием лишних составляющих спектра.
Наложение окна Натолла без добавления нулей показано на рис. 11.
Рисунок 11. Красный - входной сигнал; зеленый - окно Наттолла с усилением
Таким образом, мы рассмотрели применение элементов спектрального анализа при работе в пакете SystemView. Проведенное моделирование показывает целесообразность использования временных окон сложной конфигурации.
На этом авторы завершают цикл публикаций по пакету SystemView. В ближайшее время в издательстве "Горячая линия - Телеком" планируется выход книги, посвящённой вопросам моделирования в пакете SystemView.
Авторы благодарны читателям и редакции за интерес, проявленный к работе и будут признательны за любые замечания и пожелания, которые следует направлять по адресу: 107005 Москва, 2-я Бауманская ул., д. 5, МГТУ им. Баумана, кафедра СМ5 "Автономные информационные и управляющие системы", Стешенко В.Б.
E-mail: steshenk@sm.bmstu.ru;
www.sm.bmstu.ru/sm5.
|