sp:lec4
This is an old revision of the document!
Table of Contents
Лекция 4. БПФ и практический спектральный анализ
Короткое объяснение «на пальцах»: зачем нужна лекция, что она решает и что означают картинки. Без вывода формул — только смысл.
Цели лекции (что должен уметь студент)
- Объяснить, что такое БПФ: это не новое преобразование, а быстрый алгоритм
для ДПФ.
- Показать идею «разделяй и властвуй»: одно большое ДПФ → два маленьких.
- Понять «бабочку» и бит-реверс.
- Объяснить, откуда берётся утечка (конечная запись сигнала).
- Выбирать окно под задачу.
- Понимать
Δf = 1/Tи почему zero-padding не улучшает разрешение. - Пользоваться методом Уэлча и читать PSD.
- Строить спектрограмму.
- Сделать всё это в Python.
Одной фразой: лекция 3 — «как посчитать спектр?», лекция 4 — «как посчитать быстро и не обмануть себя?».
1. Напоминание: что такое спектр
- Спектр — это «радуга» сигнала: из чего он состоит.
- Аналогия: белый свет → призма → цвета. Только «призма» здесь из арифметики.
- ДПФ: из
Nотсчётов делаетNзначений спектра. f_k = k · fд / N— частоты, на которых ДПФ «смотрит».|X[k]|— амплитуда (громкость),arg X[k]— фаза (сдвиг).
2. Проблема №1: дорого
- Прямое ДПФ требует
N²операций. - Для
N = 1 000 000это10¹²— триллион. - Долго; в реальном времени невозможно.
3. БПФ: что это и как устроено
3.1 Главная мысль
- БПФ даёт тот же ответ, что ДПФ.
- Это просто более умный способ считать.
- Сложность:
N log₂NвместоN². - Для миллиона точек — быстрее в десятки тысяч раз.
3.2 Три идеи
- Разделяй и властвуй.
- Делим отсчёты на чётные и нечётные.
- Одно ДПФ длины
N→ два ДПФ длиныN/2. - Повторяем рекурсивно →
log₂Nуровней.
- Бабочка.
- Способ снова соединить две половины.
X[k] = E[k] + W·O[k].X[k + N/2] = E[k] − W·O[k].- Одно умножение и два сложения дают сразу две точки спектра.
- Бит-реверс.
- Плата за деление: на входе отсчёты стоят не по порядку.
- Порядок для
N = 8:0, 4, 2, 6, 1, 5, 3, 7. - Правило: номер в двоичном виде читается справа налево.
3.3 Что запомнить
- Схема БПФ — регулярные «стадии» из бабочек.
- Поэтому
Nудобно брать степенью двойки. - На практике БПФ не пишут сами: берут
np.fft.fft(NumPy/SciPy), FFTW, MKL, cuFFT.
4. Проблема №2: конечная запись → утечка
4.1 Почему появляется утечка
- Мы всегда берём кусок сигнала длиной
T, а не весь сигнал. - Формально это умножение на прямоугольное окно.
- Правило: умножение во времени = свёртка в спектре.
- Спектр прямоугольного окна — «холмик с хвостами» (
sinc). - Поэтому чистый тон превращается в холмик, а не в одну палочку.
- Это не ошибка — следствие конечности записи.
4.2 Окна: лекарство от утечки
- Идея: обрезать сигнал мягко, а не резко.
- Умножаем сигнал на плавную функцию (в центре 1, к краям → 0).
- Лечит боковые лепестки, но расширяет главный — это неустранимый компромисс.
4.3 Популярные окна
| Окно | Главный лепесток | Боковые лепестки | Когда брать |
|---|---|---|---|
Прямоугольное (boxcar) | 2 бина | −13 дБ | максимальная резкость |
| Hann | 4 бина | −31 дБ | «рабочая лошадка» |
| Hamming | 4 бина | −43 дБ | чуть больше динамики |
| Blackman–Harris | 8 бинов | −92 дБ | слабая линия рядом с сильной |
| flat-top | 10 бинов | −93 дБ | точная амплитуда |
4.4 «Паспорт» окна — два числа
- coherent gain — поправка на амплитуду.
- Hann ≈ 0.5, Hamming ≈ 0.54, flat-top ≈ 0.22.
- ENBW — поправка на шум (эквивалентная шумовая полоса).
- Прямоугольное 1.0, Hann 1.5, flat-top 3.77.
scipy.signal.welchучитывает это сам, но знать нужно — иначе спектры нельзя
сравнивать.
5. Разрешение по частоте
- Формула:
Δf = fд / N = 1 / T. - Разрешение задаёт длительность записи
T, а не частота дискретизации. - Чтобы различить два близких тона — надо дольше смотреть.
- Критерий Рэлея: различимы, если расстояние
> Δf. - Для Hann практически нужно
≈ 2Δf. - Пример: тона 1000 и 1040 Гц.
N = 128→ сливаются.N = 1024→ видны два пика.
6. Миф: zero-padding
- Что делают: дополняют сигнал нулями до большой длины.
- Что получают: гладкий спектр с плотной сеткой.
- В чём ошибка: думают, что улучшили разрешение.
- На самом деле: это интерполяция той же кривой.
- Вывод: разрешение улучшает только удлинение реальной записи.
7. Усреднение: метод Уэлча
7.1 Почему один спектр «мохнатый»
- Одна периодограмма
|X|²статистически неустойчива. - Её разброс не уменьшается с ростом
N. - Аналогия: одно измерение шума случайно, сто усреднённых — устойчивы.
7.2 Идея по шагам
- Режем запись на сегменты (можно с перекрытием).
- К каждому сегменту применяем окно.
- Считаем БПФ и квадрат модуля.
- Усредняем по сегментам.
7.3 Что получаем и чем платим
- Получаем: несмещённую оценку с меньшим разбросом (падение в
√Kраз). - Платим: разрешение определяется длиной сегмента, а не всей записи.
- Настройки:
nperseg(длина сегмента),noverlap(перекрытие).
8. PSD: плотность мощности
- Когда сигнал шумовой, «амплитуда на частоте» бессмысленна.
- Правильная мера — мощность на герц (PSD).
- Площадь под кривой PSD = полная мощность сигнала.
- Две нормировки в
scipy.signal:scaling='density' → «мощность/Гц» — для шумов;scaling='spectrum' → «мощность в бине» — для линий.
- Практика: для диагностики бери
densityи доверьwelch.
9. Точная частота (сверх сетки)
- Сетка даёт частоту с шагом
Δf. - Хотим точнее — используем параболическую интерполяцию по трём точкам вокруг
пика.
- Пример из лекции: истина 100.4 Гц, оценка 100.34 Гц при сетке 3.9 Гц.
10. Спектрограмма: сигнал меняется во времени
- Обычный спектр предполагает, что сигнал всё время одинаков.
- STFT: считаем спектр в скользящем окне.
- Результат — спектрограмма: время по горизонтали, частота по вертикали,
яркость = мощность.
- Видно чирп (наклонная линия) и короткие всплески (пятна).
Компромисс «время — частота»
- Короткое окно: хорошо «когда», плохо «какая частота».
- Длинное окно: хорошо «какая частота», плохо «когда».
- Это принцип неопределённости, а не недоработка метода.
11. Реальный пример: вибрация
- В сигнале: база 50 Гц, дефект 120 Гц, слабая гармоника 240 Гц, шум.
- Одна периодограмма: слабая линия тонет в шуме.
- Welch + окно Hann: шум сглаживается, линия 240 Гц видна.
- Итог: спектр — это основа для решения, а не картинка.
12. Шпаргалка (словарь)
| Термин | Что означает | ||
|---|---|---|---|
| ДПФ | N чисел → N чисел спектра | ||
| БПФ | быстрый алгоритм того же ДПФ, O(N log N) | ||
| Бабочка | операция соединения двух половин спектра | ||
| Бит-реверс | перестановка входа БПФ | ||
| Окно | плавное обрезание записи | ||
| Утечка | размазывание линии из-за конечности записи | ||
| Главный лепесток | ширина пика → разрешение | ||
| Боковые лепестки | «хвосты», мешают видеть слабые линии | ||
| Coherent gain | поправка на амплитуду | ||
| ENBW | поправка на шум | ||
| Разрешение | Δf = 1/T | ||
| Zero-padding | интерполяция, а не разрешение | ||
| Периодограмма | ` | БПФ | ²` одной записи |
| Метод Уэлча | усреднение периодограмм | ||
| PSD | мощность на герц | ||
| Спектрограмма | спектр во времени (STFT) |
13. Частые ошибки
- «Подниму частоту дискретизации — улучшу разрешение».
- Нет: разрешение задаёт время записи
T.
- «Дополню нулями — увижу больше деталей».
- Нет: это интерполяция той же кривой.
- «Окно Hann убирает шум».
- Нет: окно борется с утечкой, шум убирает усреднение.
- «БПФ — приближённый метод».
- Нет: результат точно совпадает с ДПФ.
- «Спектры с разными окнами можно сравнивать по высоте пиков».
- Только с учётом coherent gain.
14. План рассказа на 2 академических часа
- 5 мин. Напомнить ДПФ и его цену
O(N²). - 15 мин. Идея БПФ, бабочка, бит-реверс, граф, сложность.
- 15 мин. Конечная запись → утечка; окна; компромисс лепестков.
- 15 мин. Разрешение
Δf = 1/T; два тона; миф про zero-padding. - 15 мин. Уэлч и PSD: зачем усреднять.
- 15 мин. Спектрограмма, компромисс время–частота, точная частота.
- 10 мин. Реальный кейс (вибрация), рецепт
scipy.signal, задание №4.
Приём для аудитории: сначала показать плохую картинку («в лоб»), потом — что делает каждый приём. Тогда инструмент запоминается как лекарство от конкретной боли.
15. Главная мысль
- Спектр — это не картинка, а измерение.
- Чтобы ему верить, мало уметь считать быстро (БПФ).
- Нужно понимать, как его искажают конечная запись и окно.
- Нужно уметь отделять реальные линии от артефактов (окна, усреднение, PSD).
Дальше: лекция 5 — спектры радиосигналов и модуляция (АМ/ЧМ/ФМ), комплексная огибающая (I/Q).
Материалы
sp/lec4.1791450550.txt.gz · Last modified: by 127.0.0.1
