Table of Contents

Лекция 4. БПФ и практический спектральный анализ

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


О чём этот текст и как им пользоваться


Цели лекции (что должен уметь студент)

  1. Объяснить, что такое БПФ:
    • это не новое преобразование, а быстрый алгоритм для ДПФ;
    • результат точно совпадает с ДПФ;
    • выигрыш — в тысячи и десятки тысяч раз.
  2. Показать идею «разделяй и властвуй»:
    • одно большое ДПФ → два маленьких;
    • рекурсия → log₂N уровней.
  3. Понять «бабочку» и бит-реверс.
  4. Объяснить, откуда берётся утечка.
  5. Осознанно выбирать окно под задачу.
  6. Понимать Δf = 1/T и почему zero-padding не улучшает разрешение.
  7. Пользоваться методом Уэлча и читать PSD.
  8. Строить спектрограмму.
  9. Сделать всё это в Python.

Зачем каждый пункт на практике:


1. Напоминание: что такое спектр и зачем он нужен

1.1 Сигнал и его «радуга»

1.2 Формула ДПФ словами

1.3 Амплитуда, фаза, мощность

1.4 Вещественный и комплексный сигнал

симметричны положительным.

1.5 Ось частот и бины

1.6 Маленький пример

1.7 Как выглядит спектр типичных сигналов

1.8 Краткая история БПФ


2. Проблема №1: считать спектр «в лоб» дорого

2.1 Сколько это операций

2.2 Почему это критично

2.3 Сравнение в числах

N Прямое ДПФ N² БПФ N·log₂N Во сколько раз меньше
64 ~4·10³ ~4·10² ~16
1024 ~10⁶ ~10⁴ ~100
65 536 ~4·10⁹ ~10⁶ ~4000
10⁶ ~10¹² ~2·10⁷ ~50 000

2.4 Что такое «сложность O(·)» на пальцах

2.5 Как ускоряли до БПФ (интуиция)


3. БПФ: быстрое преобразование Фурье

3.1 Главная мысль

3.2 «Разделяй и властвуй»

(W_N² = W_(N/2)).

3.3 Почему деление «работает»

3.4 «Бабочка»

3.5 Ручной пример для ''N = 4''

3.6 Ручной пример для ''N = 8'' (идея)

3.7 Бит-реверс

3.8 Как выглядит граф 8-точечного БПФ

3.9 Итеративный и рекурсивный варианты

3.10 Варианты алгоритма и практика

3.11 Где БПФ применяется


4. Проблема №2: конечная запись и утечка

4.1 Что мы на самом деле считаем

4.2 Свёртка «на пальцах»

4.3 Откуда боковые лепестки (''sinc'')

4.4 Численный пример утечки

4.5 Окна: лекарство от утечки

4.6 Популярные окна

Окно Главный лепесток Боковые лепестки Когда брать
Прямоугольное (boxcar) 2 бина −13 дБ максимальная резкость, чистые тона
Hann 4 бина −31 дБ «рабочая лошадка», общий анализ
Hamming 4 бина −43 дБ чуть больше динамического диапазона
Blackman–Harris 8 бинов −92 дБ слабая линия рядом с сильной
flat-top 10 бинов −93 дБ точная амплитуда (калибровка)

4.7 «Паспорт» окна: coherent gain и ENBW

4.8 Как выбрать окно

4.9 Частые вопросы про окна


5. Разрешение по частоте

5.1 Главная формула

5.2 Диапазон и разрешение — разные вещи

различаем».

5.3 Число Найквиста

5.4 Критерий Рэлея

5.5 Опыт с двумя тонами

5.6 От чего ещё зависит разрешение

5.7 Примеры ''Δf'' для разных ''T''

Длительность T Δf = 1/T
0.1 с 10 Гц
0.5 с 2 Гц
1 с 1 Гц
10 с 0.1 Гц

6. Миф: zero-padding

6.1 Что делают

6.2 Почему это не улучшает разрешение

6.3 Когда zero-padding полезен

6.4 Как не спутать


7. Усреднение: метод Уэлча

7.1 Почему один спектр «мохнатый»

7.2 Идея по шагам

  1. Резать запись на сегменты.
  2. Брать их с перекрытием.
  3. Применять окно.
  4. Считать БПФ и |·|².
  5. Усреднять по сегментам.

7.3 Что получаем и чем платим

7.4 Как выбирать параметры

7.5 Сколько нужно усреднений

7.6 Родственники метода

7.7 Порядок действий

  1. Определить нужное Δf.
  2. По нему выбрать длину сегмента.
  3. Взять окно (Hann).
  4. Перекрытие 50%.
  5. Посчитать welch.
  6. Убедиться: линии на месте, шум «успокоился».

8. PSD: спектральная плотность мощности

8.1 Что это

8.2 Две нормировки

8.3 Формула с ENBW

8.4 Мощность в полосе

8.5 Зачем децибелы

Отношение мощностей В дБ
×2 +3
×10 +10
×100 +20
×1000 +30
×10⁶ +60

8.6 Типичные ошибки с PSD


9. Точная оценка частоты


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

10.1 Что такое STFT

10.2 Что видно на спектрограмме

10.3 Компромисс время–частота

10.4 Когда спектрограмма нужна

10.5 Родственные инструменты


11. Реальный пример: вибрация, шаг за шагом


12. Шпаргалка (словарь терминов)

Термин Что означает
ДПФ N чисел → N чисел спектра
БПФ быстрый алгоритм того же ДПФ, O(N log N)
Бабочка операция соединения двух половин спектра
Бит-реверс перестановка входа БПФ
Окно плавное обрезание записи
Утечка размазывание линии из-за конечности записи
Главный лепесток ширина пика → разрешение
Боковые лепестки «хвосты», мешают видеть слабые линии
Coherent gain поправка на амплитуду
ENBW поправка на шум (эквивалентная шумовая полоса)
Разрешение Δf = 1/T
Zero-padding интерполяция, а не разрешение
Периодограмма квадрат модуля БПФ одной записи
Метод Уэлча усреднение периодограмм по сегментам
PSD мощность на герц
Спектрограмма спектр во времени (STFT)
Бин узел частотной сетки ДПФ
Найквист верхняя частота f_д/2

13. Частые ошибки и заблуждения


14. Типичные ошибки в коде (''scipy'')


15. Практические рецепты по задачам


16. Мини-лаборатория (что сделать в ноутбуке руками)

  1. Сгенерировать чистый тон ровно в бине и посмотреть ДПФ.
  2. Сдвинуть частоту на полбина и увидеть утечку.
  3. Применить окно Hann и сравнить боковые лепестки в дБ.
  4. Сравнить спектры при N = 128 и N = 1024 (два близких тона).
  5. Дополнить нулями и убедиться, что разрешение не улучшилось.
  6. Реализовать простой БПФ radix-2 и сверить с numpy.fft.
  7. Посчитать periodogram и welch, сравнить «мохнатость».
  8. Построить PSD в density и spectrum, объяснить разницу.
  9. Сделать спектрограмму чирпа и короткого всплеска.
  10. Оценить частоту параболической интерполяцией.

17. План рассказа на 2 академических часа

  1. 5 мин. ДПФ и его цена O(N²).
  2. 15 мин. БПФ: разделяй и властвуй, бабочка, бит-реверс, сложность.
  3. 15 мин. Конечная запись → утечка; окна; компромисс лепестков.
  4. 15 мин. Разрешение Δf = 1/T; два тона; миф про zero-padding.
  5. 15 мин. Уэлч и PSD: зачем усреднять; density vs spectrum.
  6. 15 мин. Спектрограмма; компромисс время–частота; точная частота.
  7. 10 мин. Реальный кейс (вибрация), рецепт scipy.signal, задание №4.

18. Вопросы для самопроверки

  1. Чем БПФ отличается от ДПФ по результату и стоимости?
  2. Зачем на входе БПФ бит-реверс?
  3. Что физически означает утечка?
  4. Почему окно расширяет главный лепесток?
  5. Как выбрать окно для слабой линии рядом с сильной?
  6. Почему Δf = 1/T, а не связано с f_д?
  7. Почему zero-padding не улучшает разрешение?
  8. Зачем перекрытие сегментов в Уэлче?
  9. Чем density отличается от spectrum?
  10. В чём компромисс время–частота?

19. Связь с другими темами курса


20. Итог одной страницей


21. Главная мысль и что дальше

созвездия, комплексная огибающая (I/Q).


Приложения

22. Математика за формулами — словами

22.1 Почему формула ДПФ именно такая

плоскости.

которая при суммировании накапливается.

22.2 Формула Эйлера — словами

22.3 Умножение во времени = свёртка в спектре

22.4 Откуда берётся «заворачивание» и периодичность

22.5 Откуда ENBW

22.6 Почему разброс Уэлча падает как ''1/√K''

22.7 Равенство Парсеваля

22.8 Частоты и бины


23. Вопросы и развёрнутые ответы

  1. Почему БПФ быстрее, если считает то же самое?

Оно переиспользует одни и те же множители за счёт деления задачи пополам;

 число операций становится ''N·log₂N'' вместо ''N²''.
  1. БПФ даёт другой результат?

Нет. Отличия только из-за машинного округления; математически результат тот же.

  1. Можно ли считать БПФ для любого N?

Для N = 2^m проще всего (radix-2). Для других N есть mixed-radix и

 специальные алгоритмы; часто проще добить нулями до степени двойки.
  1. Что делать, если частоты точно не в бинах?

Использовать окно (Hann/Blackman–Harris) и/или интерполировать пик.

  1. Почему у прямоугольного окна боковые только −13 дБ?

Это следствие «резкого» обрыва записи; спектр такого окна — медленно затухающий

 ''sinc''.
  1. Какое окно универсальное?

Hann: хороший компромисс между разрешением и динамическим диапазоном.

  1. Как увидеть слабую линию рядом с сильной?

Blackman–Harris (или Hann) + усреднение; при необходимости — вычитание сильной

 линии.
  1. Почему после zero-padding график гладкий, но пики не разделились?

Потому что это интерполяция; новых данных нет.

  1. Что выбрать: разрешение или меньше шума?

Это компромисс: длинный сегмент — лучше разрешение, короткий — меньше шума.

  1. Сколько нужно данных для устойчивого спектра?

Чем больше, тем лучше; ориентир — десятки-сотни сегментов для гладкой PSD.

  1. Что такое «шумовая полка»?

Средний уровень PSD шума; реальные линии — пики над полкой.

  1. Чем density отличается от spectrum?

density — мощность на герц (для шума); spectrum — мощность в бине (для

  линий).
  1. Почему в дБ?

Динамический диапазон спектра огромен; дБ «сжимает» масштаб для глаза.

  1. Как точно измерить частоту?

Интерполяция пика (парабола по логарифму), фазовый метод, Прони/MUSIC.

  1. Что такое спектрограмма?

Спектр во времени: STFT в скользящем окне.

  1. Почему на спектрограмме нельзя быть точным и по времени, и по частоте?

Принцип неопределённости: короткое окно — время, длинное — частота.

  1. Нужно ли вычитать среднее?

Да, постоянная составляющая (нулевая частота) иначе «давит» масштаб.

  1. Что делать с алиасингом?

Ставить антиалиасинговый фильтр до дискретизации и следить за f_д/2.

  1. Можно ли анализировать нестационарный сигнал одним спектром?

Можно, но он «смешает» режимы; лучше спектрограмма.

  1. Где это применяется в курсе?

В сквозном проекте: диагностика по вибрации, акустика, радио (RFID), речь.


24. Как читать ноутбук лекции (по шагам)


25. Другие инструменты спектрального анализа


26. Историческая и практическая справка

ограничения.


27. Полный числовой пример БПФ (N = 4, вручную)


28. Чек-лист практика: как анализировать спектр

  1. Определить диапазон частот, который интересует.
  2. Выбрать частоту дискретизации (f_д ≥ 2·верхняя частота).
  3. Определить нужное разрешение Δf и отсюда длительность T.
  4. Решить, стационарный ли сигнал (нужна ли спектрограмма).
  5. Выбрать окно (по умолчанию Hann).
  6. Для шумного сигнала — усреднить (Уэлч), подобрать nperseg/noverlap.
  7. Проверить нормировку (density/spectrum, coherent gain).
  8. Построить спектр в дБ и отметить ожидаемые линии.
  9. Уточнить частоты пиков интерполяцией.
  10. Сравнить с физикой процесса и сделать вывод.

29. Англо-русский глоссарий

Английский Русский
DFT ДПФ
FFT БПФ
bin бин, узел сетки
window окно
leakage утечка
main lobe главный лепесток
side lobe боковой лепесток
coherent gain когерентное усиление
ENBW эквивалентная шумовая полоса
zero padding дополнение нулями
periodogram периодограмма
Welch method метод Уэлча
PSD спектральная плотность мощности
spectrogram спектрограмма
resolution разрешение
alias / aliasing наложение / алиасинг
bit reversal бит-реверс
radix-2 основание 2
Nyquist Найквист
decibel (dB) децибел

30. Ещё вопросы (продолжение)

  1. Почему N степень двойки удобно? Radix-2 требует N = 2^m, и БПФ работает

без «хвостов» и специальных случаев.

  1. Что будет, если N простое? Прямое radix-2 не ляжет; нужны смешанные

алгоритмы или паддинг.

  1. Влияет ли форма окна на измерение амплитуды? Да; учитывайте coherent gain.
  2. Сколько бинов у вещественного сигнала? N/2 + 1.
  3. Зачем rfft? Вдвое меньше вычислений и памяти для вещественного сигнала.
  4. Что такое «центрированный» спектр? После fftshift: нулевая частота в

центре.

  1. Что делать с постоянной составляющей? Вычесть среднее перед анализом.
  2. Как выбрать nperseg? Под нужное разрешение; обычно степень двойки.
  3. Что если сигнал не стационарный? Спектрограмма/вейвлеты.
  4. Как сравнивать два спектра? Одинаковые окно, длина, нормировка.
  5. Что такое утечка «на практике»? Кажущиеся линии рядом с реальной.
  6. Почему шум «мохнатый»? Оценка по одной реализации; нужна статистика.
  7. Как измерить уровень шума? По шумовой полке PSD.
  8. Зачем нужен noverlap? Чтобы не терять данные на границах сегментов.
  9. Что читать дальше? Оппенгейм/Шафер, Сергиенко; статьи Harris и Welch.

31. Что студент должен уметь «на выходе»


32. Разбор по кейсам сквозного проекта


33. Методические заметки для преподавателя


34. «Формула → смысл» — короткая шпаргалка


35. Аналогии и метафоры (чтобы объяснить любому)


36. Частые вопросы о дискретизации и Найквисте

оцифровать без алиасинга.

период (один — «вверх», один — «вниз»).

это алиасинг.

том же T — нет.

необратим.

линия на спектре.


37. Практические значения параметров для железа курса


38. Что делать, если «не получается» (траблшутинг)


39. Итог


40. Как строить выводы (научная добросовестность)

Материалы