Среди электротехнических дисциплин РЧ/СВЧ особенно выделяется своими контринтуитивными принципами. Их понимание всегда происходит с трудом. Если в них разобраться, то эти принципы начинают казаться чем‑то совершенно естественным, и их сложность забывается. Возможно, именно поэтому справочные материалы по РЧ/СВЧ нередко подобны анекдоту «А восьмёрка, сын, пишется как знак бесконечности, повёрнутый на пи пополам».
С учётом подобной особенности я постараюсь максимально доступно и в картинках показать, как и почему работает теорема Найквиста — Шеннона. И как иногда обходят ограничения, которые эта теорема устанавливает.

Игры с синусоидой

Допустим, у нас есть синусоида единичной амплитуды и частоты.

Сделаем замеры её значений через равные интервалы времени, а затем воспользуемся дискретным преобразованием Фурье как чёрным ящиком (в данной статье я использую алгоритм Ломба-Скаргла), чтобы получить спектр.

Спектр синусоиды единичной частоты и амплитуды
Спектр синусоиды единичной частоты и амплитуды

Теперь попробуем поменять интервалы между замерами.

Какие-то непонятные артефакты
Какие-то непонятные артефакты

Мы видим, что при увеличении периода дискретизации в спектре появляются артефакты в виде парных пиков. Каждый пик — это синусоида с определённой частотой и амплитудой (и фазой, но значения фазы на спектре не видны и они для нас пока не принципиальны).
Частоты синусоид этих артефактов следуют определённой закономерности.

Закономерность расположения артефактов в спектре
Закономерность расположения артефактов в спектре

Попробуем разобраться в этой закономерности (сейчас будет чуть-чуть тригонометрии, но лишь из школьного курса).

Важное замечание: ниже я буду вместо 2πft писать просто f.
Почему для строгости формулировок следовало бы писать именно 2πft — под спойлером.
Почему я пишу именно f — потому, что моя цель не погрузить вас, уважаемые читатели, в марево формул, а донести суть. Но если вдруг решите показать это вашему доценту будьте готовы, что он спросит "А где стрелочки на графиках?!" :)

f или 2πft?

Функция sin() принимает в качестве аргумента угол в радианах.

Если мы при помощи функции синуса моделируем некий периодический процесс, происходящий во времени, то нам следует поставить аргумент в зависимость от времени. Хотя бы вот так: sin(t).

Если рассматриваемых процессов несколько, они могут отличаться скоростью. Для этого перед t, общим для всех процессов, нам следует поставить какой-нибудь коэффициент. Например у sin(2t) периоды будут протекать в два раза быстрее, чем у sin(t).

Как сделать так, чтобы частота периодического процесса, описываемого функцией sin(t) была строго равна 1 герцу?.
Вот так: sin(2πt).
Если время в секундах, то за одну секунду аргумент поменяется от 0 до 2π. А это — полный круг.

Теперь осталось добавить к 2πt коэффициент, отвечающий за скорость протекания процесса — частоту. И получится 2πft

Но писать:

{sin(f)\over1}+{sin(3f)\over3}+{sin(5f)\over5}

...проще и понятней, чем...

{sin(2πft)\over1}+{sin(6πft)\over3}+{sin(10πft)\over5}

Посмотрим на сумму синусоид первого артефакта:

sin((n+1)f)+sin((n−1)f)

Сумму синусов можно представить в виде произведения синуса и косинуса:

sin(ɑ)+sin(β)=2sin({(ɑ+β)\over2})cos({(ɑ−β)\over2})

В нашем случае ɑ=(n+1)f, а β=(n−1)f.

Соответственно (ɑ+β)/2 будет равно:

{(ɑ+β)\over2}={(n+1)f+(n−1)f\over2}={f(n+1+n−1)\over2}=nf

...а (ɑ−β)/2 будет равно:

{(ɑ−β)\over2}={(n+1)f−(n−1)f\over2}={f(n+1−n+1)\over2}=f

Таким образом, получается:

sin((n+1)f)+sin((n−1)f)=2sin(nf)cos(f)

Уберём множитель «2» и подумаем, как будет выглядеть sin(nf)cos(f)?
Как высокочастотная синусоида sin(nf), промодулированная низкочастотной косинусоидой cos(f).

Форма артефактов во временной области
Форма артефактов во временной области

Строго говоря, косинусоида — это синусоида, сдвинутая на четверть периода.
Зная это, попробуем сделать одно важное наблюдение: давайте посмотрим, как будет выглядеть не наш sin(nf)cos(f), а cos(nf)sin(f):

Артефакты, оригинальный сигнал и дискретные значения
Артефакты, оригинальный сигнал и дискретные значения

Получается, если мы берём косинусоиду с частотой, равной произведению базовой частоты f на количество замеров в периоде, то её максимумы («единицы») будут приходиться на моменты замеров.
Если же мы умножим такую косинусоиду на sin(f) — синусоиду с базовой частотой, — то значение sin(f) в каждой точке замера будет умножаться на единицу и получившаяся кривая пройдёт ровно через те же точки.
Полученная кривая, очевидно, принципиально отличается от sin(f), но если смотреть лишь на значения, полученные во время дискретизации, то эти две кривые оказываются неразличимы!

Говоря более общими словами, в отсутствие дополнительных условий восстановление синусоиды из данных дискретизации не является однозначной операцией.

Чем больше замеров, тем лучше?

Прежде чем двигаться дальше, рассмотрим один важный аспект.

В теореме Найквиста — Шеннона речь идёт о частоте дискретизации.
Иногда при формулировании положений теоремы вместо частоты дискретизации говорят о «количестве замеров (семплов, отсчётов) на один период дискретизируемого сигнала».

А затем, в ряде случаев, это выражение риторически редуцируется просто до «количества замеров».

Здесь начинаются «чудеса» в духе «восстановления сигнала сложной формы по двум точкам» :)

Надо понимать, что общее количество замеров может быть сколь угодно больши́м, но если интервал между замерами велик, то в спектре артефакты будут близки по частотам к оригинальному сигналу.
Количество же охватываемых измерениями периодов сигнала (которое равно отношению общего количества замеров к количеству замеров на период) будет влиять на ширину пиков.

Это две различные характеристики массива значений дискретизации, которые влияют на разные элементы спектра.

В общем, да. Чем больше замеров, тем лучше. Но есть нюансы :)
В общем, да. Чем больше замеров, тем лучше. Но есть нюансы :)

Сложности с сигналами сложной формы

Когда одна из синусоид артефакта совпадёт по частоте с исходной синусоидой?
Очевидно, когда n−1 станет равен единице. Это, в свою очередь будет, в случае n=2, то есть, когда частота дискретизации окажется равной удвоенной частоте исходной синусоиды.

Что будет, если мы понизим частоту дискретизации ещё сильнее?
В общем, примерно всё то же самое: из двух синусоид будет получаться некая фигура, отличающаяся по форме от базовой синусоиды, но проходящая ровно по точкам дискретизации:

Низкочастотные артефакты и оригинальный сигнал во временной области
Низкочастотные артефакты и оригинальный сигнал во временной области

Это возвращает нас к вопросу:
если мы хотим по данным дискретизации восстановить именно ту синусоиду, которую мы измеряли, что именно нам нужно будет дополнительно знать, чтобы сделать это однозначно?

В общем случае нам нужно приблизительно знать её частоту.

И если частота дискретизации была больше, чем удвоенная частота синусоиды, то мы можем восстанавливать самый низкочастотный пик — не ошибёмся.

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

Низкочастотные артефакты и оригинальный сигнал в спектре
Низкочастотные артефакты и оригинальный сигнал в спектре

Проговаривая это, мы оставляем за скобками ещё два дополнительных факта о сигнале: что он — одиночная синусоида и что он — единственный сигнал в нашем измерительном тракте.

То есть, помимо его примерной частоты, мы гарантированно знаем его форму. И гарантированно знаем, что кроме него других сигналов в измерительном тракте на момент дискретизации не было.

Представим, что у нас чуть более сложный сигнал. Скажем, несколько гармоник от меандра. Но при этом мы сделаем вид, будто не знаем, что сигнал — именно меандр.

Напомню, меандр раскладывается в ряд Фурье так:

{sin(x)\over1}+{sin(3x)\over3}+{sin(5x)\over5}+{sin(7x)\over7}+{sin(9x)\over9}+...

sin(x)+sin(3x)/3+sin(5x)/5+sin(7x)/7+sin(9x)/9+...

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

Сигнал сложной формы и его артефакты
Сигнал сложной формы и его артефакты

Высокочастотные составляющие сигнала тоже образуют артефакты в виде пары пиков, но эти пики, очевидно, «расставлены» шире.

При этом, так как мы договорились, что не знаем точную форму сигнала, мы не можем, например, «вырезать» его составляющие многополосным фильтром.

В такой ситуации нам придётся выбрать такую частоту дискретизации, чтобы пик артефакта от самой высокочастотной составляющей базового сигнала не оказался в области с пиками от настоящих составляющих.

Эта частота будет равна удвоенной частоте самой высокочастотной составляющей дискретизируемого сигнала.

Здесь есть тонкий момент. Иногда эта фраза трактуется ошибочно как: «мне необходимо лишь добиться частоты дискретизации 2f, чтобы однозначно восстановить все интересующие меня составляющие любого сложного сигнала вплоть до f».

Посмотрим на спектр настоящего меандра:

 Спектр меандра
Спектр меандра

У меандра бесконечное количество составляющих. И если мы хотим однозначно восстанавливать первые три составляющие, нам мало взять частоту дискретизации, равную 2×(5×f). Нам ещё нужно, чтобы сигнал перед дискретизацией не имел составляющих с частотой выше, чем та, которую мы собираемся восстанавливать.

Ещё раз. Если у исходного сигнала возможно наличие составляющих выше тех, которые вам интересны, необходимо их отфильтровать перед дискретизацией. То есть гарантировать отсутствие высокочастотных составляющих. В противном случае артефакты от этих высокочастотных составляющих будут восстановлены вперемешку с полезным сигналом.

Теорема Найквиста — Шеннона и как её обходят

Итак.

Теорема Найквиста — Шеннона гласит, что сигнал с конечным по частоте спектром можно однозначно восстановить, если частота дискретизации в два и более раза превышает самую высокочастотную составляющую сигнала.

Когда теорема Найквиста — Шеннона ошибается?

При условиях, оговорённых в теореме, и при отсутствии дополнительных данных — никогда.

Однако, во‑первых, как уже было сказано, для чистой синусоиды, при отсутствии иных сигналов в измерительном тракте мы можем ограничить частотный диапазон с двух сторон и подобрать период дискретизации так, чтобы ложные пики оказались за рамками этого диапазона.

Во‑вторых, мы, заранее зная частоту и/или форму сигнала, можем между реально измеренными точками добавить ещё точек путём, например, линейной интерполяции.
В ряде случаев мы разменяем небольшое искажение формы сигнала на весомое указание при восстановлении сигнала, какие составляющие мы считаем настоящими.

В‑третьих, заранее зная частоту периодического сигнала (либо имея триггер, некий однозначный признак начала очередного периода), этот сигнал можно «нарезать» на периоды и наложить их друг на друга вместе с замерами. В результате количество замеров на период увеличится.

Equivalent‑Time Sampling
Equivalent‑Time Sampling

Такая техника называется Equivalent‑Time Sampling и применяется, например, в цифровых осциллографах.

Надеюсь, этот обзор позволил кому‑нибудь пережить инсайт и преодолеть порог непонимания такого базового элемента в сфере РЧ/СВЧ, как теорема Найквиста — Шеннона.

НЕБОЛЬШОЕ ОБЪЯВЛЕНИЕ №1

В ближайшее время планируется проведение уже третьего электроквиза. Желающие всё ещё могут присоединиться, для этого нужно написать мне.

НЕБОЛЬШОЕ ОБЪЯВЛЕНИЕ №2

Близятся некоторые перемены.
И всем, кто находит мои технические статьи (например, про JTAG или про согласование импедансов) интересными/полезными для себя, я рекомендую скопировать эти статьи локально.

Кроме этого. Если вы хотите в будущем читать мои новые статьи, я рекомендую установить со мной личный контакт.

Оптимально — через почту flammmable.habr@gmail.com. Опционально — установить и настроить мессенджер Delta Chat. Короткое описание и инструкцию по работе с ним я публиковал ранее.

Не оптимально — здесь в личных сообщениях, либо через Телеграм @flammmable_habr.

Совсем не оптимально, но тоже можно — подписавшись на мой потешный канал flammmable_electro, либо на тег flammmable на Joyreactor.