Учебник Цифровая обработка сигналов (DSP) для начинающих
Полный инженерный курс по цифровой обработке сигналов (DSP) на русском языке — от ответа на вопрос «что такое сигнал» до проектирования цифровых фильтров и спектрограмм. Вы разберёте дискретизацию и теорему Котельникова, алиасинг и квантование, свёртку и LTI-системы, преобразование Фурье и БПФ. Главное отличие курса: ДПФ, БПФ, свёртку и фильтры мы реализуем по-настоящему — на чистом стандартном Python через модуль cmath, с точным выводом и ASCII-графиками спектров. В конце — практические задачи (чистка ЭКГ от наводки 50 Гц, детект частоты и пиков, корреляция), 2D-обработка изображений и обзор реальных инструментов numpy/scipy. Каждый урок — лонгрид с разбором «под капотом», частыми ошибками и мини-квизом.
Курс «Цифровая обработка сигналов (DSP)» состоит из 9 разделов и 32 уроков: Введение в ЦОС, Дискретизация и квантование, Основные сигналы и операции, Свёртка и LTI-системы, Преобразование Фурье, БПФ и спектральный анализ, Цифровые фильтры, Практические задачи DSP и 2D-сигналы и инструменты. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Введение в ЦОС
- Что такое сигнал
Сигнал как величина, меняющаяся во времени: примеры из звука, радио, медицины и датчиков. Аналоговые и цифровые сигналы простым языком.
- Зачем обрабатывать сигналы
Зачем нужна цифровая обработка сигналов: шумоподавление, сжатие, анализ, фильтрация и распознавание. Реальные задачи DSP в звуке, связи и медицине.
- Виды сигналов
Классификация сигналов: непрерывные и дискретные, периодические и апериодические, детерминированные и случайные, чётные и нечётные. Энергия и мощность сигнала.
- Язык DSP: обозначения и термины
Базовые обозначения цифровой обработки сигналов: отсчёт, индекс, частота дискретизации, нормированная частота, единичный импульс и единичная ступень.
- Что такое сигнал
2 Дискретизация и квантование
- Дискретизация по времени
Дискретизация сигнала: переход от непрерывного к отсчётам, частота дискретизации, период дискретизации. Как АЦП превращает аналог в список чисел.
- Теорема Котельникова и частота Найквиста
Теорема Котельникова (Найквиста-Шеннона): почему частота дискретизации должна быть минимум вдвое выше максимальной частоты сигнала. Частота Найквиста простыми словами.
- Алиасинг: что будет, если нарушить теорему
Алиасинг (наложение спектров): почему высокая частота при недостаточной дискретизации маскируется под низкую. Эффект стробоскопа, обратное вращение колёс, муар.
- Квантование, разрядность и шум квантования
Квантование сигнала по амплитуде: уровни, разрядность (биты), шаг квантования и шум квантования. Отношение сигнал/шум и правило 6 дБ на бит.
- Дискретизация по времени
3 Основные сигналы и операции
- Базовые сигналы: синус, импульс, ступень, шум
Элементарные сигналы DSP: синусоида и косинусоида, единичный импульс, единичная ступень, белый шум. Генерируем их на чистом Python и понимаем роль каждого.
- Амплитуда, частота и фаза
Три параметра синусоиды: амплитуда (громкость), частота (высота тона) и фаза (сдвиг). Как каждый меняет сигнал и почему фаза важна при сложении волн.
- Операции над сигналами
Базовые операции DSP над сигналами: сложение, умножение, масштабирование амплитуды, сдвиг во времени, инверсия и прореживание. Линейные комбинации сигналов.
- Модуляция: AM и кольцевая модуляция
Модуляция сигнала: амплитудная модуляция (AM), несущая и модулирующий сигнал, кольцевая модуляция. Почему умножение сигналов рождает боковые частоты.
- Базовые сигналы: синус, импульс, ступень, шум
4 Свёртка и LTI-системы
- Свёртка: главная операция ЦОС
Свёртка сигналов: что это, формула, принцип «скольжение и сумма». Реализуем дискретную свёртку на чистом Python и понимаем её смысл шаг за шагом.
- Импульсная характеристика системы
Импульсная характеристика (импульсный отклик) системы: что это, как её снять единичным импульсом и почему она полностью описывает линейную систему.
- Линейные стационарные системы (LTI)
Линейные стационарные системы (LTI): свойства линейности и стационарности, принцип суперпозиции, почему именно LTI-системы лежат в основе всей теории фильтров.
- Свёртка: главная операция ЦОС
5 Преобразование Фурье
- Идея Фурье: любой сигнал — сумма синусов
Главная идея анализа Фурье: любой сигнал можно представить как сумму синусоид разных частот. Ряд Фурье для периодических сигналов на наглядном примере меандра.
- Спектр: что показывает частотная картина
Спектр сигнала: переход из временной области в частотную, что показывают амплитудный спектр и спектральные линии. Зачем смотреть на сигнал в частотной области.
- Дискретное преобразование Фурье (ДПФ)
Дискретное преобразование Фурье (ДПФ): формула через комплексные экспоненты, реализация на чистом Python через cmath, вычисление спектра реального сигнала.
- Обратное ДПФ, амплитудный и фазовый спектр
Обратное дискретное преобразование Фурье (оДПФ): восстановление сигнала из спектра. Амплитудный и фазовый спектр: что показывает каждый и почему фаза важна.
- Идея Фурье: любой сигнал — сумма синусов
6 БПФ и спектральный анализ
- Быстрое преобразование Фурье (БПФ)
Быстрое преобразование Фурье (БПФ, FFT): идея «разделяй и властвуй», снижение сложности с O(N^2) до O(N log N). Рекурсивная реализация на чистом Python через cmath.
- Оконные функции и утечка спектра
Утечка спектра при ДПФ и оконные функции: окна Хэмминга и Ханна, почему сигнал «между бинами» размазывается и как окно уменьшает боковые лепестки. Разрешение по частоте.
- STFT и спектрограмма: спектр во времени
Кратковременное преобразование Фурье (STFT) и спектрограмма: как анализировать сигнал, спектр которого меняется во времени. Кадры, перекрытие, связь со звуком и речью.
- Быстрое преобразование Фурье (БПФ)
7 Цифровые фильтры
- Зачем нужны фильтры и какие они бывают
Цифровые фильтры: зачем фильтровать сигнал, типы фильтров ФНЧ, ФВЧ, полосовой и режекторный. Что значит «пропустить» или «подавить» частоту.
- КИХ-фильтры (FIR): свёртка с ядром
КИХ-фильтры (FIR) с конечной импульсной характеристикой: фильтрация как свёртка с ядром, проектирование скользящим средним и методом окна. Линейная фаза FIR.
- БИХ-фильтры (IIR): рекурсия и обратная связь
БИХ-фильтры (IIR) с бесконечной импульсной характеристикой: рекурсивная структура с обратной связью, эффективность по сравнению с FIR, однополюсный фильтр. Устойчивость IIR.
- АЧХ, ФЧХ и обзор z-преобразования
Характеристики фильтра: амплитудно-частотная (АЧХ) и фазочастотная (ФЧХ), полоса пропускания и переходная зона. Обзор z-преобразования, полюса и нули.
- Зачем нужны фильтры и какие они бывают
8 Практические задачи DSP
- Убираем сетевую наводку 50 Гц из ЭКГ
Практическая задача DSP: удаление сетевой наводки 50 Гц из сигнала ЭКГ. Режекторный фильтр и трюк со скользящим средним, которое точно гасит мешающую частоту.
- Детект частоты, пиков и огибающей
Практические приёмы анализа сигнала: определение доминирующей частоты через пик спектра, поиск локальных пиков и вычисление огибающей сигнала методом выпрямления и сглаживания.
- Корреляция и согласованная фильтрация
Корреляция сигналов: взаимная корреляция и автокорреляция, поиск шаблона в сигнале, согласованный фильтр для обнаружения известной формы в шуме. Связь с радаром и GPS.
- Убираем сетевую наводку 50 Гц из ЭКГ
9 2D-сигналы и инструменты
- Обработка изображений как 2D-сигналов
Изображение как двумерный сигнал: 2D-свёртка с ядром, фильтры размытия, повышения резкости и выделения краёв. Связь обработки изображений с компьютерным зрением.
- Семплинг и реконструкция на практике
Восстановление сигнала из отсчётов на практике: ступенчатая (ZOH) и линейная интерполяция, роль восстанавливающего фильтра ЦАП, передискретизация. От цифры обратно к аналогу.
- Инструменты и типичные ошибки
Реальные инструменты DSP: numpy.fft, scipy.signal, librosa — что использовать на практике. Типичные ошибки: алиасинг, утечка спектра, неверная нормировка ДПФ, нелинейности.
- Обработка изображений как 2D-сигналов