Дискретизация и теорема Котельникова
Урок про то, как часто нужно опрашивать датчик, чтобы не потерять информацию.
Теорема Котельникова: непрерывный сигнал с максимальной частотой $f_{max}$ полностью восстановим, если частота дискретизации $f_s \ge 2 f_{max}$.
Оцифровка — это снятие отсчётов через равные промежутки времени. Если опрашивать датчик слишком редко, быстрые изменения «проскользнут» между отсчётами и превратятся в ложный медленный сигнал. Эта ловушка называется алиасингом, и теорема Котельникова говорит, как её избежать.
Частота Найквиста
Минимальная безопасная частота дискретизации:
$$ f_s \ge 2\,f_{max} $$
Половину частоты дискретизации $f_s/2$ называют частотой Найквиста — это потолок частот, которые можно различить.
# Сигнал датчика содержит частоты до 50 Гц
f_max = 50
f_nyquist = 2 * f_max
print("Минимальная f_s:", f_nyquist, "Гц")
# с запасом обычно берут 5-10x
print("С запасом (5x):", 5 * f_max, "Гц")Вывод:
Минимальная f_s: 100 Гц С запасом (5x): 250 Гц
Алиасинг: как частота маскируется
Если в сигнале есть частота выше Найквиста, она «отразится» и проявится как другая, более низкая частота:
$$ f_{alias} = \lvert f - k\,f_s \rvert,\quad k = \text{ближайшее целое} $$
# Меряем с частотой 100 Гц сигнал 130 Гц
fs = 100
f = 130
k = round(f / fs)
f_alias = abs(f - k * fs)
print("Истинная частота:", f, "Гц")
print("Покажется как:", f_alias, "Гц")Вывод:
Истинная частота: 130 Гц Покажется как: 30 Гц
Как работает под капотом
Чтобы алиасинг не испортил измерение, перед АЦП ставят аналоговый антиалиасинговый фильтр — он отрезает частоты выше Найквиста ещё до оцифровки. После оцифровки убрать наложенную частоту уже нельзя: ложная и настоящая компоненты неразличимы. Поэтому правило простое: сначала фильтр, потом АЦП. Для медленных датчиков (температура) это не критично, для быстрых (вибрация, звук) — обязательно.
Частые ошибки
- Брать $f_s = f_{max}$ вместо $2 f_{max}$ — сигнал не восстановится.
- Надеяться убрать алиасинг цифровым фильтром после АЦП — поздно, частоты уже слились.
- Забывать про антиалиасинговый фильтр на быстрых сигналах.
Итог
- Дискретизация — снятие отсчётов через равные интервалы $1/f_s$.
- Теорема Котельникова: $f_s \ge 2 f_{max}$.
- Высокие частоты без фильтра дают алиасинг, который потом не убрать.