Теорема Котельникова и частота Найквиста

Главное правило оцифровки: сколько отсчётов нужно, чтобы ничего не потерять.

Теорема Котельникова (на Западе — Найквиста-Шеннона): сигнал с максимальной частотой fmax полностью восстанавливается из отсчётов, если частота дискретизации fs > 2*fmax.

Это краеугольный камень всей цифровой обработки. Он отвечает на вопрос «не теряем ли мы информацию, заменяя линию точками?». Ответ: при соблюдении условия — не теряем, отсчёты содержат сигнал целиком и точно.

Почему именно вдвое

Чтобы распознать колебание, на один его период нужно хотя бы две точки: одна на «горб», одна на «впадину». Если точек меньше двух за период — мы не отличим эту частоту от более низкой. Граничная частота fs/2 называется частотой Найквиста: это самая высокая частота, которую данная fs ещё способна корректно представить.

Период синуса и минимум точек на него:

2 точки/период (минимум по Котельникову):
 o           o           o
  \         / \         /
   \       /   \       /
    o     o     o     o

1 точка/период (нарушение — частота потеряна):
 o     o     o     o     o
   все на одной высоте — колебание "исчезло"

Считаем минимальную частоту дискретизации

def min_fs(fmax):
    return 2 * fmax    # нижняя граница по Котельникову

signals = [
    ("Речь по телефону", 3400),
    ("Музыка (слух)", 20000),
    ("ЭКГ", 150),
    ("FM-радио (звук)", 15000),
]

for name, fmax in signals:
    print(f"{name:<20} fmax={fmax:>6} Гц  ->  fs > {min_fs(fmax)} Гц")

Вывод:

Речь по телефону     fmax=  3400 Гц  ->  fs > 6800 Гц
Музыка (слух)        fmax= 20000 Гц  ->  fs > 40000 Гц
ЭКГ                  fmax=   150 Гц  ->  fs > 300 Гц
FM-радио (звук)      fmax= 15000 Гц  ->  fs > 30000 Гц

На практике берут с запасом: для аудио не 40 кГц, а 44.1, чтобы антиалиасинговый фильтр успел плавно срезать частоты возле границы.

Восстановление: отсчёты содержат всё

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

import math

fs = 20.0           # частота дискретизации
f1, f2 = 2.0, 5.0   # обе частоты ниже fs/2 = 10 Гц -> условие выполнено

def signal(t):
    return math.sin(2 * math.pi * f1 * t) + 0.5 * math.sin(2 * math.pi * f2 * t)

# Отсчёты
samples = [round(signal(n / fs), 3) for n in range(10)]
print("Частота Найквиста:", fs / 2, "Гц")
print("Максимальная частота сигнала:", f2, "Гц  ->  условие fs>2*fmax:", fs > 2 * f2)
print("Отсчёты:", samples)

Вывод:

Частота Найквиста: 10.0 Гц
Максимальная частота сигнала: 5.0 Гц  ->  условие fs>2*fmax: True
Отсчёты: [0.0, 1.088, 0.951, 0.451, 0.588, 0.5, -0.588, -1.451, -0.951, -0.088]

Как работает под капотом

Вспомним: дискретизация копирует спектр с шагом fs. Если весь спектр сигнала лежит ниже fs/2, соседние копии не перекрываются — между ними есть «зазор». Тогда идеальный ФНЧ с границей fs/2 вырежет ровно одну исходную копию и восстановит сигнал. Если же сигнал содержит частоты выше fs/2, копии налезут друг на друга, зазора нет, и никакой фильтр уже не разделит перемешанное. Вот геометрический смысл «вдвое»: нужен зазор между копиями спектра, а он появляется ровно при fs > 2*fmax.

Частые ошибки

  • Считать, что fs = 2*fmax достаточно ровно. Теорема требует строгого неравенства fs > 2*fmax; на самой границе синус, попавший узлами в нули, теряется.
  • Брать fmax как «частоту голоса», забыв про шум. Если на входе есть высокочастотный шум выше fs/2, он тоже наложится — отсюда необходимость антиалиасингового фильтра.
  • Думать, что отсчёты — «приближение». При выполненном условии они содержат сигнал точно, без потерь.

Итог

  • Теорема Котельникова: fs > 2*fmax гарантирует точное восстановление сигнала из отсчётов.
  • Частота Найквиста fs/2 — верхняя граница корректно представимых частот.
  • Минимум две точки на период — иначе колебание не распознать.
  • Геометрически условие даёт зазор между копиями спектра, который и позволяет восстановить оригинал.
Проверьте себя
1. Что утверждает теорема Котельникова?
AСигнал можно дискретизировать с любой частотой без потерь
Bfs должна быть строго больше удвоенной максимальной частоты сигнала
Cfs должна равняться максимальной частоте сигнала
DЧем меньше fs, тем лучше
2. Что такое частота Найквиста?
AМаксимальная частота сигнала
BПоловина частоты дискретизации, fs/2 — верхняя граница представимых частот
CУдвоенная частота дискретизации
DЧастота сети 50 Гц
3. Сколько отсчётов минимум нужно на один период колебания?
AОдин
BДва
CДесять
DСколько угодно
4. Сигнал содержит частоты до 4 кГц. Какая fs допустима по теореме?
Afs = 4000 Гц
Bfs = 6000 Гц
Cfs = 9000 Гц
Dfs = 2000 Гц