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

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

1. Введение в дискретные сигналы: теорема Котельникова и процессы квантования

Введение в дискретные сигналы: теорема Котельникова и процессы квантования

Добро пожаловать на курс «Основы теории цифровой обработки сигналов». Мы начинаем наше погружение в мир, где физическая реальность встречается с математической абстракцией и компьютерными алгоритмами. Сегодня цифровая обработка сигналов (ЦОС) окружает нас повсюду: от музыки в вашем смартфоне и стриминговых сервисов до медицинской томографии и систем автопилота в автомобилях.

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

Аналоговый мир против Цифрового

Прежде чем углубляться в формулы, давайте определимся с базовыми понятиями. Мир вокруг нас по своей природе аналоговый. Звук голоса, температура воздуха, интенсивность света — все это непрерывные величины. Они меняются плавно и могут принимать бесконечное множество значений в любой момент времени.

Компьютеры, напротив, работают с дискретными данными. Они не могут хранить бесконечность. Им нужно четкое, конечное число значений. Процесс перевода аналогового сигнала в цифровой называется аналого-цифровым преобразованием (АЦП). Этот процесс состоит из двух ключевых этапов:

  • Дискретизация (работа со временем).
  • Квантование (работа с амплитудой).
  • !Преобразование непрерывной волны в набор дискретных отсчетов.

    Дискретизация и Теорема Котельникова

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

    Эти измерения называются отсчетами или сэмплами (от англ. sample).

    Частота дискретизации

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

    Математически связь между периодом дискретизации (временем между замерами) и частотой выражается так:

    где — частота дискретизации (в Гц), а — период дискретизации (в секундах).

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

    Теорема Котельникова (Найквиста-Шеннона)

    Ответ на этот вопрос дает фундаментальная теорема, сформулированная советским ученым Владимиром Котельниковым в 1933 году (и независимо от него — Гарри Найквистом и Клодом Шенноном на Западе).

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

    Формула выглядит следующим образом:

    где — частота дискретизации, а — максимальная частота полезного сигнала.

    !Иллюстрация корректной и некорректной частоты дискретизации.

    Почему это важно? Пример с аудио

    Человеческое ухо способно слышать звуки в диапазоне от 20 Гц до 20 000 Гц (20 кГц). Значит, для музыки, которую мы слышим, составляет 20 кГц.

    Используя теорему Котельникова, рассчитаем минимальную частоту дискретизации:

    где — верхняя граница слуха человека, а — минимально необходимая частота замеров.

    Именно поэтому стандарт Audio CD (компакт-дисков) использует частоту 44 100 Гц. Это немного больше теоретического минимума в 40 кГц, что оставляет небольшой «запас прочности» для работы фильтров.

    Эффект наложения спектров (Aliasing)

    Что произойдет, если мы нарушим теорему и выберем ? Произойдет явление, называемое элайзинг (aliasing) или наложение спектров. Высокие частоты исходного сигнала при восстановлении превратятся в ложные низкие частоты.

    Визуальный пример элайзинга — это эффект «колеса, вращающегося назад» в фильмах. Камера снимает 24 кадра в секунду, и если колесо вращается с определенной скоростью, нам кажется, что оно стоит на месте или крутится в обратную сторону. Это ошибка дискретизации временнóго процесса.

    Квантование: Превращение амплитуды в цифры

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

    Когда мы измерили сигнал в определенный момент времени, мы получили какое-то значение, например, 0.532189... Вольт. Но компьютер не может хранить числа с бесконечной точностью. Мы должны округлить это значение до ближайшего уровня из заранее определенного набора. Этот процесс и называется квантованием.

    Битовая глубина (Разрядность)

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

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

    где — количество уровней квантования, а — количество бит (разрядность).

    Рассмотрим примеры:

    * 8 бит: уровней. Это качество старых игровых приставок или простой телефонии. * 16 бит: уровней. Это стандарт CD-Audio. Динамический диапазон гораздо шире. * 24 бита: уровней. Используется в профессиональных студиях звукозаписи.

    !Сравнение исходного аналогового сигнала и квантованного ступенчатого сигнала.

    Ошибка квантования (Шум квантования)

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

    Максимальная ошибка квантования равна половине шага квантования:

    где — максимальная ошибка, а (дельта) — шаг квантования (расстояние между соседними уровнями).

    В звуке эта ошибка слышна как тихий фоновый шум (шипение). Чем больше бит мы используем, тем меньше шаг , тем меньше ошибка и тем чище сигнал.

    Итоги

    Цифровая обработка сигналов начинается с правильного перевода аналогового мира в цифры. Для этого мы используем два процесса:

  • Дискретизация — разбиение времени на равные отрезки. Здесь правит теорема Котельникова: частота замеров должна быть минимум вдвое выше максимальной частоты сигнала ().
  • Квантование — округление амплитуды до ближайшего значения из сетки уровней. Точность зависит от битовой глубины ().
  • Понимание этих принципов критически важно. Ошибка на этапе оцифровки необратима: если вы выбрали слишком низкую частоту дискретизации, вы потеряете высокие частоты и получите искажения (элайзинг). Если вы выбрали слишком низкую разрядность, вы получите высокий уровень шума.

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

    2. Математический анализ: Z-преобразование и дискретное преобразование Фурье

    Математический анализ: Z-преобразование и дискретное преобразование Фурье

    В предыдущей статье мы научились превращать непрерывный мир в цифры. Мы узнали, как теорема Котельникова позволяет нам «нарезать» время на дискретные отсчеты, а квантование — присваивать этим отсчетам конкретные числовые значения. Теперь у нас есть массив чисел. Но что с ним делать дальше?

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

    В этой статье мы познакомимся с двумя главными математическими инструментами цифровой обработки сигналов (ЦОС): Z-преобразованием и Дискретным преобразованием Фурье (ДПФ). Не пугайтесь названий — мы разберем их суть максимально просто.

    Зачем нам нужна математика?

    В аналоговой электронике инженеры используют преобразование Лапласа для анализа цепей. В цифровом мире, где сигналы прерывисты (дискретны), аналогом этого мощного инструмента является Z-преобразование. Оно позволяет нам анализировать системы, предсказывать их поведение и, самое главное, проектировать цифровые фильтры.

    Если Z-преобразование — это «швейцарский нож» теоретика, то преобразование Фурье — это «молоток» практика. Оно позволяет разложить сложный сигнал на простые составляющие, подобно тому как призма раскладывает белый свет на радугу.

    Z-преобразование: Обобщенная частота

    Давайте начнем с Z-преобразования. Это математическая операция, которая переводит последовательность чисел (наш цифровой сигнал) в функцию комплексной переменной. Это звучит сложно, но на практике это способ компактно записать свойства сигнала или системы.

    Формула одностороннего Z-преобразования выглядит так:

    Где: * — образ сигнала в Z-области (результат преобразования). * — знак суммирования (мы складываем все значения). * — номер отсчета (индекс времени: 0, 1, 2...). * — значение нашего дискретного сигнала в момент времени . * — комплексная переменная. Она содержит в себе информацию и о частоте, и о затухании сигнала. * — множитель, который математически означает «задержку» на тактов.

    Физический смысл

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

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

    !Блок-схема элемента единичной задержки, показывающая суть оператора z.

    Z-плоскость и единичная окружность

    Переменная — это комплексное число. Как мы знаем из математики, комплексные числа можно изобразить на плоскости. В ЦОС особую роль играет единичная окружность на этой плоскости (окружность радиусом 1 с центром в начале координат).

    Почему она важна? Потому что поведение системы (например, фильтра) зависит от того, где располагаются её особые точки (полюса и нули) относительно этой окружности:

  • Если полюса системы находятся внутри окружности, система устойчива (сигнал не разрастается до бесконечности).
  • Если хотя бы один полюс снаружи, система неустойчива (она «заведется» и сломается).
  • Сама окружность соответствует реальным физическим частотам.
  • Дискретное преобразование Фурье (ДПФ)

    Теперь перейдем к самому популярному инструменту — преобразованию Фурье. Жан-Батист Жозеф Фурье утверждал, что любой, даже самый сложный периодический сигнал можно представить как сумму простых синусоид разной частоты и амплитуды.

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

    Формула ДПФ:

    Где: * — значение спектра на частоте с номером (комплексное число, описывающее амплитуду и фазу). * — индекс частоты (от 0 до ). * — общее количество отсчетов в анализируемом блоке сигнала. * — индекс времени (текущий отсчет). * — значение входного сигнала в момент времени . * — основание натурального логарифма (число Эйлера). * — мнимая единица (). * — число Пи.

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

    Где: * — комплексная экспонента. * — действительная часть (косинус угла). * — мнимая часть (синус угла). * — угол (фаза).

    По сути, формула ДПФ «сравнивает» наш сигнал с набором эталонных синусоид разной частоты. Если в сигнале есть определенная частота, результат умножения будет большим. Если нет — близким к нулю.

    !Принцип Фурье: сложный сигнал состоит из суммы простых волн.

    Амплитудный и Фазовый спектр

    Результат ДПФ — это комплексные числа. Обычно инженерам неудобно работать с ними напрямую, поэтому мы вычисляем две характеристики:

  • Амплитудный спектр — показывает, насколько «сильна» каждая частота. Это модуль комплексного числа.
  • Фазовый спектр — показывает, с какой задержкой (сдвигом) идет эта частота. Это аргумент (угол) комплексного числа.
  • Например, эквалайзер в музыкальном плеере работает именно с амплитудным спектром, позволяя вам сделать басы (низкие частоты) громче.

    Быстрое преобразование Фурье (БПФ или FFT)

    Вы наверняка слышали аббревиатуру FFT (Fast Fourier Transform). Важно понимать: это не другое математическое преобразование. Это просто очень хитрый и быстрый алгоритм вычисления обычного ДПФ.

    Если вычислять ДПФ «в лоб» по формуле выше, то для сигнала длиной отсчетов компьютеру нужно сделать операций. Если , то это 1 000 000 операций. А если (что часто бывает в аудио), то это триллион операций!

    Алгоритм БПФ (придуманный Кули и Тьюки в 1965 году) сокращает это число до . Для миллиона отсчетов это всего лишь около 20 миллионов операций вместо триллиона. Именно благодаря БПФ мы можем смотреть видео в реальном времени и пользоваться связью 5G.

    Связь Z-преобразования и Фурье

    Как связаны эти два понятия? Очень просто. Преобразование Фурье — это частный случай Z-преобразования.

    Если в формуле Z-преобразования мы заменим на (то есть ограничимся рассмотрением только единичной окружности), мы получим спектр сигнала. Можно сказать, что Z-преобразование анализирует сигнал во всей комплексной плоскости, а Фурье — только на «ободке» единичной окружности, который отвечает за чистые частоты.

    Практическое применение

    Зачем нам все это нужно в курсе?

  • Спектральный анализ: Понять, из чего состоит сигнал. Например, в медицине по ЭКГ определяют работу сердца, анализируя его спектр.
  • Фильтрация: Чтобы убрать шум из аудиозаписи, нужно знать, на каких частотах этот шум находится. Мы переводим сигнал в частотную область (ДПФ), обнуляем ненужные частоты и переводим обратно.
  • Сжатие данных: Формат MP3 и JPEG работают на принципах, схожих с преобразованием Фурье (точнее, косинусным преобразованием). Они выбрасывают частоты, которые человеческий глаз или ухо не замечают.
  • Заключение

    Мы разобрали сложный математический фундамент. Давайте подытожим:

    * Z-преобразование — это обобщенный инструмент для анализа дискретных систем. Переменная означает задержку на один такт. * ДПФ (DFT) — переводит сигнал из времени в частоты, показывая его спектральный состав. * БПФ (FFT) — это быстрый алгоритм для вычисления ДПФ, без которого современная цифровая техника была бы невозможна.

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

    3. Линейные стационарные системы: свертка и импульсная характеристика

    Линейные стационарные системы: свертка и импульсная характеристика

    В предыдущих статьях мы заложили фундамент: научились оцифровывать сигналы (теорема Котельникова) и анализировать их частотный состав (ДПФ и Z-преобразование). Теперь у нас есть цифровой сигнал — последовательность чисел. Но что нам с ним делать? Как изменить его звучание, убрать шум или выделить полезную информацию?

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

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

    Что такое Линейная стационарная система?

    В мире существует бесконечное множество способов обработки данных. Однако инженеры особенно любят класс систем, который называется LTI (Linear Time-Invariant) или, в русской терминологии, Линейные стационарные системы (ЛСС). Почему? Потому что их поведение предсказуемо, их легко анализировать, и они описывают большинство реальных физических процессов (от распространения звука в комнате до работы электрических цепей).

    Чтобы система считалась LTI, она должна обладать двумя свойствами:

    1. Линейность

    Линейность означает, что система подчиняется принципу суперпозиции. Это можно разбить на два простых правила:

    * Масштабируемость: Если мы увеличим входной сигнал в 2 раза, выходной сигнал тоже увеличится ровно в 2 раза. * Аддитивность (Сложение): Если мы подадим на вход сумму двух сигналов (), то на выходе получим сумму реакций системы на каждый сигнал по отдельности (Реакция на + Реакция на ).

    Математически это записывается так:

    Где: * — оператор системы (преобразование). * — входные сигналы. * — выходные сигналы (реакции на и ). * — произвольные числовые коэффициенты (константы). * — индекс времени.

    Проще говоря: система не добавляет от себя ничего «нового» (никаких искажений, квадратов или корней), она просто честно обрабатывает то, что ей дали.

    2. Стационарность (Инвариантность во времени)

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

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

    Где: * — исходный входной сигнал. * — исходный выходной сигнал. * — величина задержки (сдвига во времени). * — задержанный входной сигнал. * — задержанный выходной сигнал.

    !Иллюстрация принципов линейности и стационарности: форма сигнала сохраняется, задержка входа вызывает такую же задержку выхода.

    Импульсная характеристика: ДНК системы

    Представьте, что перед вами «черный ящик» — неизвестная линейная стационарная система. Вы не знаете, что внутри: эквалайзер, ревербератор или фильтр низких частот. Как узнать, что она делает?

    В физике мы бы ударили по предмету молотком и послушали звук. В ЦОС мы делаем то же самое: подаем на вход самый простой и короткий сигнал — единичный импульс.

    Единичный импульс (дельта-функция Кронекера) обозначается как :

    Где: * — значение импульса в момент времени . * — амплитуда импульса в нулевой момент времени. * — значение сигнала во все остальные моменты времени.

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

    > Импульсная характеристика полностью описывает поведение линейной стационарной системы. Если вы знаете , вы знаете о системе абсолютно всё.

    Например: * Если — это просто одиночный импульс, система ничего не делает (повторитель). * Если — это серия затухающих импульсов, система создает эхо. * Если — это плавный «холм», система размывает сигнал (фильтр низких частот).

    Свертка: Математический двигатель ЦОС

    Теперь самое интересное. Мы знаем, как система реагирует на единичный импульс. Но реальные сигналы (музыка, речь) — это не одиночные импульсы. Как предсказать реакцию системы на сложный сигнал?

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

  • Если входной сигнал состоит из суммы импульсов...
  • ...то выходной сигнал будет суммой импульсных характеристик!
  • Этот процесс суммирования реакций называется сверткой (convolution). Это главная формула во временной области ЦОС.

    Формула дискретной свертки

    Математически свертка входного сигнала и импульсной характеристики записывается так:

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

    Как понять эту формулу? (Алгоритм «Переверни и Сдвинь»)

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

  • Отразить (Flip): Взять импульсную характеристику и развернуть её задом наперед относительно нуля (получаем ).
  • Сдвинуть (Shift): Сдвинуть перевернутую характеристику на шагов вправо (получаем ).
  • Умножить (Multiply): Перемножить значения входного сигнала и сдвинутой характеристики точка за точкой.
  • Сложить (Sum): Сложить все результаты умножения. Это и будет значение в текущий момент .
  • Затем мы сдвигаем характеристику еще на один шаг () и повторяем процесс.

    !Визуализация алгоритма свертки: отражение, сдвиг, перемножение и суммирование.

    Практический пример: Скользящее среднее

    Давайте рассмотрим простейший фильтр — скользящее среднее (Moving Average). Он используется для сглаживания данных, например, цен на бирже или показаний шумного датчика.

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

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

    Если мы применим свертку этого к шумному сигналу, то каждый отсчет выхода будет являться усреднением трех соседних отсчетов входа. Резкие скачки (шум) сгладятся, так как они «растворятся» в соседних значениях. Это и есть фильтрация через свертку.

    Свертка и Частотная область

    В предыдущей статье мы изучали преобразование Фурье. Существует удивительная теорема, связывающая свертку и спектры, которая значительно упрощает жизнь инженерам:

    Свертка во временной области эквивалентна умножению в частотной области.

    Где: — сложная операция свертки сигналов во времени. * — знак соответствия между временной и частотной областями. * — спектр входного сигнала (результат Фурье-преобразования). * — частотная характеристика системы (спектр импульсной характеристики). * — обычное поточечное умножение.

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

  • Медленно: «Ползти» импульсной характеристикой по сигналу и считать свертку (во времени).
  • Быстро: Перевести сигнал в спектр (БПФ), перевести фильтр в спектр, просто перемножить их и перевести обратно.
  • Именно второй способ используется в компьютерах для обработки больших объемов данных, так как умножение намного быстрее сложной суммы свертки.

    Заключение

    Мы разобрали сердце цифровой обработки сигналов. Давайте закрепим:

  • LTI-системы — это предсказуемые системы, которые линейны и не меняются во времени.
  • Импульсная характеристика () — это реакция системы на единичный импульс. Она является уникальным «отпечатком пальца» системы.
  • Свертка — это математическая операция, позволяющая вычислить реакцию системы на любой входной сигнал, зная только её импульсную характеристику.
  • Теперь у нас есть полный набор инструментов: мы знаем, как сигналы устроены (дискретизация), как их анализировать (Фурье) и как их преобразовывать (свертка). В следующих статьях мы перейдем к конструированию конкретных устройств — цифровых фильтров (КИХ и БИХ), которые строятся именно на базе этих знаний.

    4. Основы цифровой фильтрации: проектирование КИХ и БИХ фильтров

    Основы цифровой фильтрации: проектирование КИХ и БИХ фильтров

    Мы продолжаем наш курс «Основы теории цифровой обработки сигналов». В предыдущих статьях мы прошли путь от дискретизации аналогового сигнала до изучения инструментов его анализа (Z-преобразование, ДПФ) и базовых принципов систем (свертка). Теперь, когда мы понимаем, как сигналы устроены и как математически описываются их изменения, пришло время заняться самым распространенным прикладным аспектом ЦОС — цифровой фильтрацией.

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

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

  • КИХ-фильтры (Конечная Импульсная Характеристика) — FIR (Finite Impulse Response).
  • БИХ-фильтры (Бесконечная Импульсная Характеристика) — IIR (Infinite Impulse Response).
  • В этой статье мы разберем их архитектуру, математику, достоинства, недостатки и методы проектирования.

    КИХ-фильтры (FIR): Простота и стабильность

    Начнем с КИХ-фильтров. Как следует из названия, их импульсная характеристика имеет конечную длину. Если вы подадите на вход такого фильтра единичный импульс (один отсчет равен 1, остальные 0), то на выходе вы получите последовательность, которая через определенное время станет строго равна нулю и останется такой навсегда.

    Принцип работы: Свертка

    КИХ-фильтр работает исключительно на основе операции свертки, которую мы изучили в прошлой статье. Выходное значение — это взвешенная сумма текущего и прошлых значений входного сигнала. У него нет обратной связи: выходной сигнал никогда не подается обратно на вход.

    Уравнение КИХ-фильтра выглядит так:

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

    По сути, КИХ-фильтр «смотрит» на сигнал через скользящее окно длиной отсчетов, умножает их на коэффициенты и складывает результат.

    !Структурная схема КИХ-фильтра: линия задержки с отводами.

    Преимущества КИХ-фильтров

  • Абсолютная устойчивость. Поскольку в фильтре нет обратной связи, он никогда не может «самовозбудиться» или уйти в бесконечность. Его полюса всегда находятся в начале координат Z-плоскости (в точке 0).
  • Линейная фазовая характеристика (Linear Phase). Это «киллер-фича» КИХ-фильтров. Мы можем спроектировать фильтр так, чтобы он задерживал все частоты на одинаковое время. Это критически важно для передачи данных и качественного звука, так как форма волны не искажается во времени.
  • Недостатки

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

    Проектирование: Метод окон

    Как найти коэффициенты ? Самый популярный способ — метод окон.

  • Мы берем идеальную частотную характеристику (например, прямоугольник: пропускаем все до 1000 Гц, остальное — 0).
  • Делаем обратное преобразование Фурье от этого идеала. Математика говорит нам, что идеальному фильтру соответствует функция . Она бесконечна во времени.
  • Поскольку мы не можем реализовать бесконечный фильтр, мы «обрезаем» эту функцию, умножая её на окно (например, окно Хэмминга или Блэкмана). Это делает импульсную характеристику конечной, но слегка размывает частотный срез.
  • БИХ-фильтры (IIR): Эффективность и аналоговое наследие

    БИХ-фильтры используют не только входные значения, но и предыдущие выходные значения. Это называется обратной связью (feedback) или рекурсией.

    Из-за того, что выход подается обратно на вход (пусть и с коэффициентом), «эхо» от единичного импульса теоретически может циркулировать в системе бесконечно долго, постепенно затухая (или нарастая). Отсюда и название — Бесконечная Импульсная Характеристика.

    Уравнение БИХ-фильтра

    Разностное уравнение БИХ-фильтра сложнее:

    Где: * Первая сумма () — это прямая связь (как в КИХ), обрабатывающая входные данные. * Вторая сумма () — это обратная связь, учитывающая прошлые значения выхода . * — коэффициенты обратной связи.

    !Структурная схема БИХ-фильтра с петлей обратной связи.

    Преимущества БИХ-фильтров

  • Высокая эффективность. БИХ-фильтр может обеспечить очень крутой частотный срез, используя всего 4-5 коэффициентов, там где КИХ-фильтру понадобилось бы 100. Это экономит процессорное время и память.
  • Аналоговый прототип. БИХ-фильтры математически близки к классическим аналоговым фильтрам. Если вы хотите смоделировать звучание старого синтезатора или гитарной педали, БИХ — ваш выбор.
  • Недостатки

  • Потенциальная неустойчивость. Из-за обратной связи, если коэффициенты подобраны неправильно, фильтр может начать генерировать бесконечно растущий сигнал (как микрофон, поднесенный к колонке). Полюса передаточной функции могут вылететь за пределы единичной окружности.
  • Нелинейная фаза. БИХ-фильтры задерживают разные частоты на разное время. Это может привести к фазовым искажениям (размытию атаки звука).
  • Проектирование: Билинейное преобразование

    БИХ-фильтры редко рассчитывают «с нуля». Обычно инженеры берут готовые формулы классических аналоговых фильтров (Баттерворта, Чебышева, Бесселя) и преобразуют их в цифровую форму.

    Самый популярный метод — билинейное преобразование (Bilinear Transform). Оно математически «сжимает» бесконечную частотную ось аналогового мира в конечный интервал цифровых частот (от 0 до половины частоты дискретизации), сохраняя характер фильтра.

    Сравнение КИХ и БИХ: Что выбрать?

    Выбор между КИХ и БИХ зависит от задачи. Давайте сведем их характеристики в таблицу сравнения.

    | Характеристика | КИХ (FIR) | БИХ (IIR) | | :--- | :--- | :--- | | Память (импульсная хар-ка) | Конечная | Бесконечная | | Обратная связь | Нет | Есть | | Фазовая характеристика | Линейная (идеально для данных/аудио) | Нелинейная | | Устойчивость | Всегда устойчив | Может быть неустойчив | | Вычислительная сложность | Высокая (много операций) | Низкая (мало операций) | | Порядок фильтра (для той же крутизны) | Высокий (например, 100) | Низкий (например, 4) |

    Когда использовать КИХ?

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

    Когда использовать БИХ?

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

    Z-преобразование и передаточная функция

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

    Для общего случая (БИХ-фильтра) она выглядит так:

    Где: * — передаточная функция системы. * — Z-образ выходного сигнала. * — Z-образ входного сигнала. * Числитель с коэффициентами определяет нули системы. * Знаменатель с коэффициентами определяет полюса системы.

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

    Заключение

    Мы рассмотрели два фундаментальных подхода к цифровой фильтрации.

    КИХ-фильтры — это надежные «рабочие лошадки» с прекрасными фазовыми характеристиками, но требующие вычислительной мощности. Они работают по принципу скользящего среднего и свертки.

    БИХ-фильтры — это эффективные и быстрые алгоритмы с обратной связью, наследующие поведение аналоговой электроники, но требующие осторожности в проектировании из-за риска неустойчивости.

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

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

    5. Алгоритмы быстрого преобразования Фурье (БПФ) и спектральный анализ

    Алгоритмы быстрого преобразования Фурье (БПФ) и спектральный анализ

    Добро пожаловать на очередную лекцию курса «Основы теории цифровой обработки сигналов». В предыдущих статьях мы уже познакомились с Дискретным преобразованием Фурье (ДПФ) как с математическим инструментом, позволяющим разложить сигнал на частотные составляющие. Мы также изучили цифровые фильтры, которые изменяют эти составляющие.

    Однако до сих пор мы обходили стороной один важный практический вопрос: скорость. В реальном мире, где смартфоны обрабатывают видео в 4K, а системы связи передают гигабайты данных, «чистая» математическая формула ДПФ оказывается слишком медленной.

    Сегодня мы разберем алгоритм, который называют одним из самых важных алгоритмов XX века — Быстрое преобразование Фурье (БПФ) или FFT. Также мы углубимся в тонкости спектрального анализа: узнаем, почему спектры «растекаются» и зачем сигналу нужны «окна».

    Проблема сложности: почему ДПФ — это долго?

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

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

    Это приводит нас к оценке вычислительной сложности:

    Где: * — сложность вычисления прямого ДПФ. * — «О-большое», обозначение порядка роста функции. * — количество отсчетов в сигнале. * — квадрат количества отсчетов.

    Что это значит на практике?

    Представьте, что мы анализируем аудиофайл длиной всего 1 секунду с частотой дискретизации 44 100 Гц (). Количество операций будет пропорционально . Почти 2 миллиарда операций для одной секунды звука! Для компьютеров 60-х годов это было непосильной задачей, да и современные процессоры «захлебнутся», если нужно обрабатывать данные в реальном времени.

    Спасение: Алгоритм Кули-Тьюки (БПФ)

    В 1965 году Джеймс Кули и Джон Тьюки опубликовали статью, которая перевернула мир цифровой обработки. Они показали, что если является степенью двойки (2, 4, 8, 16, 1024...), то можно применить стратегию «разделяй и властвуй».

    Идея алгоритма

    Суть БПФ заключается в следующем наблюдении: ДПФ длинной последовательности можно разбить на два ДПФ последовательностей вдвое меньшей длины.

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

    Бабочка (Butterfly)

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

    !Графическое представление базовой операции БПФ, называемой «бабочкой».

    Новая сложность

    Благодаря такому разбиению, сложность алгоритма снижается радикально:

    Где: * — сложность быстрого преобразования Фурье. * — количество отсчетов. * — двоичный логарифм от (количество этапов деления на 2).

    Давайте сравним эффективность для нашего примера с 1 секундой звука ():

    | Метод | Формула сложности | Количество операций (примерно) | | :--- | :--- | :--- | | Прямое ДПФ | | (1.6 миллиарда) | | БПФ (FFT) | | (600 тысяч) |

    Разница колоссальная: ускорение в 2500 раз! Именно благодаря БПФ мы можем смотреть потоковое видео, пользоваться 4G/5G и распознавать речь «на лету».

    Тонкости спектрального анализа

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

    Утечка спектра (Spectral Leakage)

    Математика Фурье подразумевает, что сигнал, который мы анализируем, является периодическим и бесконечным. Когда мы берем кусок сигнала длиной (например, вырезаем 10 мс звука), алгоритм считает, что этот кусок повторяется бесконечно.

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

    В частотной области этот скачок превращается в шум. Энергия одной чистой частоты «размазывается» по соседним частотам. Вместо тонкого пика мы видим широкий «холмик» с боковыми лепестками. Это явление называется утечкой спектра.

    !Иллюстрация эффекта утечки спектра: энергия сигнала растекается по соседним частотам.

    Оконные функции

    Чтобы бороться с утечкой, применяют оконные функции (windowing). Идея проста: прежде чем делать БПФ, мы умножаем наш фрагмент сигнала на специальную функцию, которая плавно уменьшается до нуля на краях.

    Это сглаживает стыки на границах фрагмента. Скачок исчезает, и боковые лепестки подавляются. Однако за это приходится платить: основной пик становится немного шире (мы теряем частотное разрешение).

    Популярные типы окон:

  • Прямоугольное окно (Rectangular): Это отсутствие окна (просто вырезали кусок). Дает самый узкий основной пик, но самые ужасные боковые лепестки (сильная утечка). Подходит только для сигналов, которые идеально укладываются в период.
  • Окно Ханна (Hann) и Хэмминга (Hamming): Имеют форму колокола (приподнятого косинуса). Отлично подавляют боковые лепестки. Стандарт де-факто для анализа аудио.
  • Окно Блэкмана (Blackman): Еще сильнее подавляет боковые лепестки, но делает основной пик еще шире.
  • Дополнение нулями (Zero Padding)

    Часто инженеры искусственно увеличивают длину входного массива, дописывая в конец нули перед выполнением БПФ. Например, имея 100 отсчетов сигнала, мы добавляем 900 нулей и делаем 1000-точечное БПФ.

    Что это дает? * Миф: Это повышает разрешение (позволяет различить две близкие частоты). * Реальность: Это интерполирует спектр. Мы получаем больше точек на графике, линия становится более гладкой, визуально приятной, и мы можем точнее определить положение максимума пика. Но если две частоты были неразличимы в исходном сигнале, нули не помогут их разделить.

    Спектрограмма: Время и Частота вместе

    Обычное БПФ показывает нам, какие частоты есть во всем сигнале в целом. Но для музыки или речи это бесполезно: нам важно знать, когда прозвучала нота или буква.

    Для этого используется Кратковременное преобразование Фурье (STFT). Мы нарезаем длинный сигнал на короткие перекрывающиеся кусочки, применяем к каждому кусочку оконную функцию и вычисляем БПФ.

    Результат выстраивается в трехмерный график или изображение, называемое спектрограммой: * Ось X: Время. * Ось Y: Частота. * Цвет/Яркость: Амплитуда (громкость) частоты.

    !Спектрограмма речи: визуализация изменения частотного состава сигнала во времени.

    Заключение

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

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

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