Курс Лекций «Основы Цифровой Обработки Сигналов»

Всем привет! Ко мне часто приходят с вопросами о проблемах в области цифровой обработки сигналов (ЦОС).

Подробно объясняю нюансы и предлагаю необходимые источники информации.

Но, как показало время, всем слушателям не хватает практических задач и примеров в процессе изучения этой области.

В связи с этим я решил написать небольшой интерактивный курс по цифровой обработке сигналов и разместить его на открытый доступ .

Большая часть учебного материала для наглядного и интерактивного представления реализована с использованием Блокнот Юпитера .

Предполагается, что читатель обладает базовыми знаниями высшей математики, а также некоторыми знаниями языка программирования Python.

Курс лекций «Основы цифровой обработки сигналов»



Список лекций

Этот курс содержит материалы в виде полных лекций по различным темам в области цифровой обработки сигналов.

Материалы представлены с использованием библиотек Python (пакеты numpy, scipy, matplotlib и др.

).

Основная информация для этого курса взята из моих лекций, которые я, будучи аспирантом, читал студентам Московского энергетического института (НИУ МИ).

Часть информации из этих лекций использовалась на обучающих семинарах в г.

Центр современной электроники , где я выступал в качестве лектора.

Кроме того, в данный материал включены переводы различных научных статей, подборка информации из надежных источников и литературы по теме цифровой обработки сигналов, а также официальная документация по пакетам приложений и встроенным функциям библиотек scipy и numpy языка Python. язык.

Для пользователей MATLAB (GNU Octave) освоение материала с точки зрения программного кода не составит труда, поскольку основные функции и их атрибуты во многом идентичны и аналогичны методам из библиотек Python. Все материалы сгруппированы по основным темам цифровой обработки сигналов:

  1. Сигналы: аналоговые, дискретные, цифровые.

    Z-преобразование,

  2. Преобразование Фурье: амплитудный и фазовый сигнал, ДПФ и БПФ,
  3. Свертка и корреляция.

    Линейная и циклическая свертка.

    Быстрый рулон,

  4. Случайные процессы.

    Белый шум.

    Функция плотности вероятности,

  5. Детерминированные сигналы.

    Модуляция: AM, FM, FM, чирп.

    Манипуляция,

  6. Фильтрация сигнала: БИХ, КИХ фильтры,
  7. Оконные функции при фильтрации задач.

    Обнаружение слабых сигналов,

  8. Повторная выборка: прореживание и интерполяция.

    CIC-фильтры, фильтры скользящего среднего,

  9. Непараметрические методы спектрального анализа,
  10. Усреднение по частоте и времени.

    Полифазное БПФ.

Список лекций достаточный, но, конечно, неполный для ознакомительного знакомства с областью ЦОС.

Если у меня будет свободное время, я планирую поддерживать и развивать этот проект.

Где найти?

Все материалы - абсолютно бесплатно и доступны в виде открытого репозитория на мой github как проект с открытым исходным кодом .

Материалы представлены в двух форматах — в виде Jupyter Notebooks для интерактивной работы, изучения и редактирования и в виде HTML-файлов, составленных из этих блокнотов (после скачивания с GitHub они имеют вполне подходящий формат для чтения и печати).

Ниже приведено очень краткое описание разделов курса с некоторыми пояснениями, терминами и определениями.

Основная информация доступна в оригинальных лекциях, это лишь краткий обзор!

Сигналы.

Z-преобразование

Вводный раздел, содержащий основную информацию о типах сигналов.

Введено понятие дискретной последовательности, дельта-функции и функции Хевисайда (единичного скачка).

Все сигналы по способу представления на множестве можно разделить на четыре группы:

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



Курс лекций «Основы цифровой обработки сигналов»

Чтобы правильно восстановить аналоговый сигнал из цифрового без искажений и потерь, используется теорема дискретизации, известная как Теорема Котельникова (Найквиста-Шеннона) .

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

Такая интерпретация справедлива при условии, что непрерывная функция времени занимает полосу частот от 0 до значения верхней частоты.

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

В этом разделе также описывается Z-преобразование и его свойствах показано представление дискретных последовательностей в Z-форме.

Пример конечной дискретной последовательности:

  
  
   

x(nT) = {2, 1, -2, 0, 2, 3, 1, 0}

.

Пример той же последовательности в Z-форме: Х(г) = 2 + г -1 - 2з -2 + 2з -4 + 3з -5 + 1з -6

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

Характеристики.

ДПФ и БПФ

В этом разделе описывается концепция временной и частотной области сигнала.

Введено определение дискретного преобразования Фурье (ДПФ).

Рассмотрены прямые и обратные ДПФ и их основные свойства.

Показан переход от ДПФ к алгоритму быстрого преобразования Фурье (БПФ) по основанию 2 (алгоритмы децимации частоты и времени).

Отражена эффективность БПФ по сравнению с ДПФ.

В частности, в этом разделе описывается пакет Python scipy.ffpack для вычисления различных преобразований Фурье (синус, косинус, прямое, обратное, многомерное, вещественное).

Преобразование Фурье позволяет представить любую функцию как набор гармонических сигналов! Преобразование Фурье лежит в основе методов свертки и построения цифровых корреляторов, активно применяется в спектральном анализе, применяется при работе с длинными числами.

Особенности спектров дискретных сигналов: 1. Спектральная плотность дискретного сигнала представляет собой периодическую функцию с периодом, равным частоте дискретизации.

2. Если дискретная последовательность настоящий , то модуль спектральной плотности такой последовательности равен даже функция, а аргумент странный функция частоты.

Спектр гармонического сигнала:

Курс лекций «Основы цифровой обработки сигналов»



Сравнение эффективности ДПФ и БПФ

Эффективность алгоритма БПФ и количество выполняемых операций линейно зависит от длины последовательности N:
Н ДПФ БПФ Соотношение количества сложных дополнений Отношение количества комплексных умножений
Количество операций умножения Количество операций сложения Количество операций умножения Количество операций сложения
2 4 2 1 2 4 1
4 16 12 4 8 4 1.5
8 64 56 12 24 5.3 2.3
16 256 240 32 64 8 3.75
32 1024 992 80 160 12.8 6.2
64 4096 4032 192 384 21.3 10.5
128 16384 16256 448 896 36.6 18.1
.

.

.

.

.

.

.

4096 16777216 16773120 24576 49152 683 341
8192 67108864 67100672 53248 106496 1260 630
Как видите, чем больше длина преобразования, тем больше экономия вычислительных ресурсов (по скорости обработки или количеству аппаратных блоков)! Любую произвольную форму сигнала можно представить как набор гармонических сигналов разной частоты.

Другими словами, сигнал сложной формы во временной области имеет набор сложных отсчетов в частотной области, которые называются *гармониками*.

Эти показания выражают амплитуду и фазу гармонического воздействия на определенной частоте.

Чем больше набор гармоник в частотной области, тем точнее представляется сложная форма сигнала.



Курс лекций «Основы цифровой обработки сигналов»



Свертка и корреляция

В этом разделе представлена концепция корреляции и свертки для дискретных случайных и детерминированных последовательностей.

Показана связь автокорреляционных и кросс-корреляционных функций со сверткой.

Описаны свойства свертки, в частности рассмотрены методы линейной и циклической свертки дискретного сигнала с детальным анализом на примере дискретной последовательности.

Кроме того, показан метод расчета «быстрой» свертки с использованием алгоритмов БПФ.

В реальных задачах часто возникает вопрос о степени сходства одного процесса с другим или независимости одного процесса от другого.

Другими словами, требуется определить связь между сигналами, то есть найти корреляция .

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

Кроме того, корреляция используется для поиска слабых сигналов в шуме.

Свертка описывает взаимодействие сигналов друг с другом.

Если одним из сигналов является импульсная характеристика фильтра, то свертка входной последовательности с импульсной характеристикой есть не что иное, как реакция схемы на входное воздействие.

Другими словами, результирующий сигнал отражает прохождение сигнала через фильтр.

Автокорреляционная функция (АКФ) находит применение при кодировании информации.

Выбор кодирующей последовательности по параметрам длины, частоты и формы во многом определяется корреляционными свойствами этой последовательности.

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

В этом разделе представлена таблица сравнения эффективности быстрой свертки и свертки, рассчитанной по прямой формуле (на основе количества действительных умножений).

Как видите, для длин БПФ до 64 быстрая свертка уступает прямому методу.

Однако по мере увеличения длины БПФ результаты меняются в обратную сторону — быстрая свертка начинает превосходить прямой метод. Очевидно, что чем больше длина БПФ, тем лучше выигрыш частотного метода.

Н Свертка Быстрая свертка Отношение
8 64 448 0.14
16 256 1088 0.24
32 1024 2560 0.4
64 4096 5888 0.7
128 16К 13312 1.23
.

.

.

.

2048 311296 13.5


Случайные сигналы и шум

В этом разделе представлены понятия случайных сигналов, плотности распределения вероятностей и закона распределения случайной величины.

Рассмотрены математические аспекты – среднее (математическое ожидание) и дисперсия (или корень этой величины – стандартное отклонение).

В этом разделе также обсуждается нормальное распределение и связанная с ним концепция.

белый шум , как основного источника шума (помех) при обработке сигнала.

Случайный сигнал — это функция времени, значения которой заранее неизвестны и могут быть предсказаны лишь с некоторым вероятность .

К основным характеристикам случайных сигналов относятся:

  • закон распределения (относительное время пребывания значения сигнала в определенном интервале),
  • спектральное распределение мощности сигнала.



Курс лекций «Основы цифровой обработки сигналов»

В задачах DSP случайные сигналы делятся на два класса:
  • шум – случайные колебания, состоящие из набора различных частот и амплитуд,
  • сигналы, несущие информацию, обработка которой требует обращения к вероятностным методам.

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

Когда сигнал проходит через какое-то зашумленное соединение, к сигналу добавляется так называемый белый шум.

Обычно спектральная плотность такого шума равномерно (равномерно) распределена на всех частотах, а значения шума во временной области распределены нормально (закон распределения Гаусса).

Поскольку белый шум физически добавляется к амплитудам сигнала в выбранные моменты времени, он называется аддитивным белым гауссовским шумом (AWGN).



Сигналы, модуляция и манипуляция

В этом разделе показаны основные способы изменения одного или нескольких параметров гармонического сигнала.

Введены понятия амплитудной, частотной и фазовой модуляции.

В частности, выделена линейная частотная модуляция, используемая в задачах радиолокации.

Показаны основные характеристики сигналов и спектры модулированных сигналов в зависимости от параметров модуляции.



Курс лекций «Основы цифровой обработки сигналов»

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

Пример реализации чирп-сигнала:

def signal_chirp(amp=1.0, freq=0.0, beta=0.25, period=100, **kwargs): """ Create Chirp signal Parameters ---------- amp : float Signal magnitude beta : float Modulation bandwidth: beta < N for complex, beta < 0.5N for real freq : float or int Linear frequency of signal period : integer Number of points for signal (same as period) kwargs : bool Complex signal if is_complex = True Modulated by half-sine wave if is_modsine = True """ is_complex = kwargs.get('is_complex', False) is_modsine = kwargs.get('is_modsine', False) t = np.linspace(0, 1, period) tt = np.pi * (freq * t + beta * t ** 2) if is_complex is True: res = amp * (np.cos(tt) + 1j * np.sin(tt)) else: res = amp * np.cos(tt) if is_modsine is True: return res * np.sin(np.pi * t) return res



Курс лекций «Основы цифровой обработки сигналов»

Также в этом разделе из теории передачи дискретных сообщений описаны виды цифровой модуляции – манипуляции.

Как и в случае с аналоговыми сигналами, цифровыми гармоническими структурами можно манипулировать по амплитуде, фазе и частоте (или несколькими способами).



Курс лекций «Основы цифровой обработки сигналов»



Цифровые фильтры - БИХ и КИХ

Довольно большой раздел посвящен вопросам цифровой фильтрации дискретных последовательностей.

В задачах цифровой обработки сигналов данные проходят через схемы, называемые фильтры .

Цифровые фильтры, как и аналоговые, имеют разные характеристики – частотную: АЧХ, Фазовую характеристику, временную: импульсную характеристику, а также передаточную характеристику фильтра.

Цифровые фильтры используются в первую очередь для улучшения качества сигнала — для изоляции сигнала от последовательности данных — или для снижения нежелательных сигналов — для подавления определенных сигналов во входящих последовательностях выборок.



Курс лекций «Основы цифровой обработки сигналов»

В разделе перечислены основные преимущества и недостатки цифровых фильтров (по сравнению с аналоговыми).

Введено понятие импульсной и передаточной характеристики фильтра.

Рассмотрены два класса фильтров: бесконечная импульсная характеристика (БИХ) и конечная импульсная характеристика (КИХ).

Способ проектирования фильтров по канонический И прямой форма.

Для КИХ-фильтров рассмотрен вопрос о переходе к рекурсивной форме.



Курс лекций «Основы цифровой обработки сигналов»

Для КИХ-фильтров показан процесс проектирования фильтра от этапа разработки технического задания (с указанием основных параметров) до программно-аппаратной реализации — поиска коэффициентов фильтра (с учетом формы представления чисел, разрядности данных, и т. д.).

Введены определения симметричных КИХ-фильтров, линейной фазовой характеристики и ее связи с понятием групповой задержки.



Курс лекций «Основы цифровой обработки сигналов»



Оконные функции в задачах фильтрации

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

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

Эта особенность выражается в соотношении уровня боковых лепестков и ширины центрального лепестка.

Правило:

Чем сильнее подавление боковых лепестков спектра, тем шире основной лепесток спектра и наоборот.


Курс лекций «Основы цифровой обработки сигналов»

Одним из применений оконных функций является обнаружение слабых сигналов на фоне более сильных путем подавления уровня боковых лепестков.

Основными функциями окна в задачах DSP являются **треугольные, синусоидальные, окна Ланцоша, Ханна, Хэмминга, Блэкмана, Харриса, Блэкмана-Харриса, плоская вершина, окна Наттолла, Гаусса, Кайзера** и многие другие.

Большинство из них выражаются через конечный ряд путем суммирования гармонических сигналов с определенными весовыми коэффициентами.

Такие сигналы прекрасно реализуются на практике на любых аппаратных устройствах (программируемых логических схемах или процессорах сигналов).



Курс лекций «Основы цифровой обработки сигналов»



Ресемплинг.

Децимация и интерполяция

В этом разделе рассматриваются вопросы многоскоростной обработки сигналов – изменение частоты дискретизации.

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

Это приводит к более эффективной обработке сигналов, поскольку открывает возможность использования минимально допустимых частот дискретизации и, как следствие, существенного снижения требуемой вычислительной производительности проектируемой цифровой системы.

Децимация (децимация) – понижение частоты дискретизации.

Интерполяция – увеличение частоты дискретизации.

В разделе также обсуждается класс однородных КИХ-фильтров, которые называются интегральными гребенчатыми фильтрами (CIC, Cascaded integrator-comb).

Показаны реализация, основные свойства и особенности CIC-фильтров.

Благодаря линейности математических операций, происходящих в CIC-фильтре, возможно каскадное подключение нескольких фильтров подряд, что дает пропорциональное снижение уровня боковых лепестков, но и увеличивает «развал» основного лепестка.

амплитудно-частотной характеристики.



Курс лекций «Основы цифровой обработки сигналов»

График АЧХ фильтра в зависимости от коэффициента децимации:

Курс лекций «Основы цифровой обработки сигналов»

В этом разделе также рассматривается вопрос увеличения разрядности данных на выходе CIC-фильтра в зависимости от его параметров.

Особенно это важно в задачах реализации программного обеспечения, в частности на ПЛИС.

Для практической реализации CIC-фильтров на Python разработан отдельный класс.

CicFilter , который реализует методы прореживания и интерполяции.

Также показаны примеры изменения частоты дискретизации с помощью встроенных методов из пакета scipy Python. Класс Python CicFilter для цифровой обработки сигналов

class CicFilter: """ Cascaded Integrator-Comb (CIC) filter is an optimized class of finite impulse response (FIR) filter. CIC filter combines an interpolator or decimator, so it has some parameters: R - decimation or interpolation ratio, N - number of stages in filter (or filter order) M - number of samples per stage (1 or 2)* * for this realisation of CIC filter just leave M = 1. CIC filter is used in multi-rate processing. In hardware applications CIC filter doesn't need multipliers, just only adders / subtractors and delay lines. Equation for 1st order CIC filter: y[n] = x[n] - x[n-RM] + y[n-1].

Parameters ---------- x : np.array input signal """ def __init__(self, x): self.x = x def decimator(self, r, n): """ CIC decimator: Integrator + Decimator + Comb Parameters ---------- r : int decimation rate n : int filter order """ # integrator y = self.x[:] for i in range(n): y = np.cumsum(y) # decimator y = y[::r] # comb stage return np.diff(y, n=n, prepend=np.zeros(n)) def interpolator(self, r, n, mode=False): """ CIC inteprolator: Comb + Decimator + Integrator Parameters ---------- r : int interpolation rate n : int filter order mode : bool False - zero padding, True - value padding. """ # comb stage y = np.diff(self.x, n=n, prepend=np.zeros(n), append=np.zeros(n)) # interpolation if mode: y = np.repeat(y, r) else: y = np.array([i if j == 0 else 0 for i in y for j in range(r)]) # integrator for i in range(n): y = np.cumsum(y) if mode: return y[1:1 - n * r] else: return y[r - 1:-n * r + r - 1]



Курс лекций «Основы цифровой обработки сигналов»

Наконец, в этом разделе представлен особый класс фильтров — скользящее среднее.

Показаны три метода реализации: посредством свертки сигнала, с использованием КИХ-фильтра и БИХ-фильтра.



Курс лекций «Основы цифровой обработки сигналов»



Заключение

Надеюсь, этот курс лекций вместе с моими предыдущими статьями о цифровой обработке сигналов на ПЛИС принесет практическую пользу и поможет читателю лучше понять основы цифровой обработки сигналов.

Этот проект будет совершенствоваться и дополняться новым полезным и не менее интересным материалом.

Следите за развитием! Помимо этого материала я поддерживаю и развиваю ваш проект на основных модулях ЦСП (на Python).

Он содержит пакет для генерации различных сигналов, класс CIC-фильтров для задач децимации и интерполяции, алгоритм расчета коэффициентов корректирующего КИХ-фильтра, фильтр скользящего среднего, алгоритм расчета сверхдлинного БПФ с использованием двумерного методы преобразования (последнее очень пригодилось в работе при аппаратной реализации на ПЛИС).



UPD: 20.04.2020

В курс добавлены две лекции:
  1. Непараметрические методы спектрального анализа ( Владимир Фадеев )
  2. Усреднение по частоте и времени.

    Полифазное БПФ.

Спасибо за внимание! Теги: #python #математика #Алгоритмы #открытый исходный код #python3 #Numpy #matlab #DSP #matplotlib #SciPy #быстрое преобразование Фурье #цифровая фильтрация #цифровая обработка сигналов #цифровая обработка сигналов
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.