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

Урок про то, как часто нужно опрашивать датчик, чтобы не потерять информацию.

Теорема Котельникова: непрерывный сигнал с максимальной частотой $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}$.
  • Высокие частоты без фильтра дают алиасинг, который потом не убрать.
Проверьте себя
1. Сигнал содержит частоты до 1 кГц. Какова минимальная частота дискретизации по Котельникову?
A500 Гц
B1 кГц
C2 кГц
D4 кГц
2. Можно ли убрать алиасинг цифровым фильтром после оцифровки?
AДа, легко
BНет, наложенные частоты уже неразличимы
CТолько для звука
DТолько если частота кратна fs