Skip to main content

Преобразование Гильберта и его применение в сельском хозяйстве

В посте про амплитудную модуляцию можно было видеть, что сигнал модулируется на двух частотах, равноотстоящих от частоты сигнала-носителя. Была там даже картиночка с "закодированным" сигналом:

Эти 2 сигнала сверху и снизу от частоты несущего сигнала называются upper sideband и lower sideband. Каждый из них равнозначен, в том плане, что исходный сигнал можно восстановить из каждого из них, перемножив sideband на несущий сигнал и пропустив через low-pass фильтр:

$\cos \left( \omega_{c} + \omega_{s} \right)t \sin \omega_{c}t = \frac{1}{2} (\sin (\omega_{c} + \omega_{s} - \omega_{c})t + \sin (\omega_{c} + \omega_{s} + \omega_{c})t) = \frac{1}{2} (\sin \omega_{s}t + \sin (2\omega_{c} + \omega_{s})t)$
$\cos \left( \omega_{c} - \omega_{s} \right)t \sin \omega_{c}t = \frac{1}{2} (\sin (\omega_{c} - \omega_{s} - \omega_{c})t + \sin (\omega_{c} - \omega_{s} + \omega_{c})t) = -\frac{1}{2} (\sin \omega_{s}t - \sin (2\omega_{c} - \omega_{s})t)$

Как видим, после фильтрации два восстановленных сигнала отличаются друг от друга лишь знаком. Соответственно, для лучшего использования имеющейся полосы пропускания, можно передавать только один из sideband'ов.

Для начала заметим, что для представления любого действительнозначного сигнала как функции от частоты $F(\omega)$ достаточно взять лишь неотрицательные частоты $\omega \ge 0$.

Для этого докажем пару теорем. Да, многие интегралы тут понимаются в смысле главного значения, но значок v.p. я опустил — лень это писать.

Теорема 1.
Если функция $f(t)$ — действительнозначная, то $F(\omega) = F^{*}(-\omega)$, где $F(\omega)$ — Фурье-преобразование этой функции.
Доказательство.
Если $f(t)$ — действительнозначная, то $f(t) = f^{*}(t)$, следовательно $\frac{1}{2\pi}\int_{-\infty}^{\infty} F(\omega) exp(i\omega t) d\omega = \frac{1}{2\pi} \int_{-\infty}^{\infty} F^{*}(\omega) exp(-i\omega t) d\omega =\frac{1}{2\pi} \int_{-\infty}^{\infty} F^{*}(-\omega) exp(i\omega t) d\omega$, откуда следует утверждение теоремы.

Теорема 2.
Если функция $f(t)$ действительнозначная, то её можно восстановить из функции $F(\omega)$, где $F(\omega)$ — Фурье-преобразование этой функции, по следующей формуле: $f(t) = \frac{1}{2\pi} \int_{0}^{\infty} (F(\omega) exp(i\omega t) + F^{*}(\omega)exp(-i\omega t))d\omega$.
Доказательство.
$f(t) = \frac{1}{2\pi} (\int_{-\infty}^{0} F(\omega) exp(i\omega t) d\omega + \int_{0}^{\infty} F(\omega) exp(i\omega t) d\omega) = $
$= \frac{1}{2\pi} (\int_{-\infty}^{0} F^{*}(-\omega) exp(i\omega t) d\omega + \int_{0}^{\infty} F(\omega) exp(i\omega t) d\omega) = $
$= \frac{1}{2\pi} (\int_{0}^{\infty} F^{*}(\omega) exp(-i\omega t) d\omega + \int_{0}^{\infty} F(\omega) exp(i\omega t) d\omega)$
Теорема доказана.
Следствие.
При рассмотрении действительнозначного сигнала можно рассмотреть эквивалентный сигнал, для которого достаточно только частот $\omega > 0$.

Составим теперь функцию $Z(\omega) = F(\omega) + sgn(\omega)F(\omega)$, где $sgn(\omega)$ — функция "signum", возвращающая знак аргумента. Легко видеть, что при $\omega < 0$ $Z(\omega)$ равна нулю. Обратное преобразование Фурье $Z(\omega)$ запишем в виде $z(t) = f(t) + ig(t)$. Докажем, что $g(t)$ —действительнозначная функция, для чего сопоставим функции $z(t) - f(t)$ и $Z(\omega) - F(\omega)$:

$z(t) - f(t) = ig(t)$
$Z(\omega) - F(\omega) = F(\omega)sgn(\omega)$

Таким образом Фурье-преобразование функции $g(t)$ равно $-iF(\omega)sgn(\omega)$. Здесь мы пользовались линейным свойством Фурье-преобразования. $g(t)$ можно рассматривать как свёртку функции $f(t)$ с функцией $[F^{-1}(-isgn(\omega))](t)$, где $F^{-1}$ — оператор обратного преобразования Фурье, не путать с функцией $F(\omega)$.

Функция $-isgn(\omega)$ не затухает при $\omega \to \infty$ и в обычном смысле не имеет обратного преобразования. Но в смысле обобщённых функций тут можно заменить её на $-ie^{-\sigma\omega}$ при $\omega > 0$ и $ie^{\sigma\omega}$ при $\omega < 0$. Найдя обратное преобразование от этой функции и устремив $\sigma$ к нулю, получим (пропущу скучные выкладки):
$F^{-1}[-isgn(\omega)](t) = \frac{1}{\pi t}$

Таким образом
$g(t) = f(t)*\frac{1}{\pi t} = \frac{1}{\pi} \int_{-\infty}^{\infty} \frac{f(\tau)}{t-\tau} d\tau$
Ясно, что раз $f(t)$ — действительнозначная, то $g(t)$ — тоже.

Функция $z(t) = f(t) + ig(t)$ называется аналитическим представлением сигнала $f(t)$, а оператор $\cdot * \frac{1}{\pi t}$ — преобразованием Гильберта. Часто преобразование Гильберта обозначают как $\hat{f}(t)$, если это не приводит к путанице с преобразованием Фурье.

Широко распространенный пример: Преобразование $f(t) = \cos\omega t$, $\omega > 0$. Эту функцию можно представить в виде двух экспонент: $f(t) = \frac{1}{2} (e^{i\omega t} + e^{-i\omega t})$. Тогда в $\hat{f}(t)$ экспоненту с положительным множетелем при $it$ умножим на $-i$, а с отрицательным — на $i$. Таким образом я поверну фазу сигнала на $-i sgn(\omega)$:
$\hat{f}(t) = \frac{1}{2} (-i e^{i \omega t} + i e^{- i \omega t}) = \frac{1}{2i} (e^{i\omega t} - e^{-i\omega t}) = \sin \omega t$
Аналитический сигнал будет равен $z(t) = \cos \omega t + i \sin \omega t = e^{i\omega t}$.

Из частотного представления мы видим, что преобразование Гильберта сдвигает сигнал на значение $\pm \frac{\pi}{2}$, преобразуя "синусные" составляющие сигнала в "косинусные" и наоборот. Чтобы лучше понять, о чём я хочу поведать, приведу ещё одну теорему.

Лемма 1. Пусть $f(t)$ и $g(t)$ — две функции из $L^{2}(\mathbb{C})$, имеющие Фурье-преобразования $F(\omega)$ и $G(\omega)$. Тогда $\int_{-\infty}^{\infty} f(t)g^{*}(t) dt = \frac{1}{2\pi} \int_{-\infty}^{\infty} F(\omega)G^{*}(\omega) d\omega$. Без пруфа.

Теорема 3.
Пусть $f(t)$ — действительнозначная функция, тогда $\int_{-\infty}^{\infty} f(t)\hat{f}(t)dt = 0$.
Доказательство.
Воспользуемся тем, что $f(t)$, а следовательно и $\hat{f}(t)$ — действительнозначная, тогда $\hat{f}^{*}(t) = \hat{f}(t)$. Тогда
$\int_{-\infty}^{\infty} f(t)\hat{f}(t)dt = \frac{1}{2\pi} \int_{-\infty}^{\infty} F(\omega) \left[-i sgn(\omega) F(\omega)\right]^{*} d\omega = \frac{i}{2\pi} \int_{-\infty}^{\infty} sgn(\omega) F^{*} (\omega)F(\omega) d\omega =$
$= \frac{i}{2\pi} \int_{-\infty}^{\infty} sgn(\omega) \left|F(\omega)\right|^2 d\omega$

Тут мы видим, что модуль в квадрате — четная функция, а $sgn(\omega)$ — нечетная. Следовательно их произведение — нечетная функция, чей интеграл по равноудалённому от нуля отрезку равен нулю. Теорема доказана.

Тут стоит заметить, что $sin(x)$ и $cos(x)$ тоже ортогональны на интервале $(-\infty, \infty)$, так что, надеюсь, стало яснее, что я имел в виду под преобразованием "синусов" в "косинусы".

Теперь переходим к практике нашей амплитудной модуляции по принципу SSB-SC (который single-sideband suppressed-carrier). Берем сигнал $\sin \omega_{s}t$ и модулируем несущим сигналом $\sin \omega_{c}t$.  Перемножим эти сигналы и прибавим произведение этих сигналов, повернутых по фазе на $\frac{\pi}{2}$:
$\sin \omega_{s} t  \sin \omega_{c} t + \cos \omega_{s} t \cos \omega_{c} t =$
$= \frac{1}{2} (\cos (\omega_{c} - \omega_{s})t - \cos (\omega_{c} + \omega_{s})t) + \frac{1}{2} (\cos (\omega_{c} - \omega_{s})t + \cos (\omega_{c} + \omega_{s})t)=$
$=\cos (\omega_{c} - \omega_{s})t$

Таким образом, из двух sideband'ов остался один, лежащий ниже частоты сигнала-носителя. Из всего выше сказанного про преобразование Гильберта чисто интуитивно (увы, строгого пруфа у меня нет) получаем рецепт замодулированного сигнала в общем виде:
$f_{mod}(t) = Im (z(t) e^{i \omega_{c} t}) = f(t) \sin\omega_{c} t + \hat{f}(t) \cos \omega_{c} t$, где $z(t)$ — аналитическое представление сигнала, а $e^{i \omega_{c} t}$ — аналитическое представление несущего сигнала.

В SuperCollider это тоже можно сделать (тут мы опять прячем сообщение на фоне шума):
(
{var input = SoundIn.ar (0, 0.2); LPF.ar(WhiteNoise.ar (0.8), 1000).dup + Mix.new (Hilbert.ar (input)*SinOsc.ar (30000, [0, pi/2]))}.play;
s.record ("~/test.wav".standardizePath);
SystemClock.sched (10.0, {s.stopRecording; s.freeAll; nil})
)

Декодировать также, как и DSB-SC. Вот спектрограмма сообщения, закодированного таким способом (на нижних частотах опять добавил шум):

Также аналитический сигнал может быть представлен в виде
$z(t) = A(t)e^{i\phi (t)}$
Значение $A(t) = \left| z(t) \right|$ называется моментальной амплитудой или огибающей сигнала. Таким образом, находя аналитический сигнал и его модуль можно производить демодуляцию амплитудно-модулированного сигнала.

Comments

Popular posts from this blog

Гладкая сшивка кусочно-постоянной функции.

Накануне мне понадобилось найти гладкую функцию, определенную на $\textbf{R}[a,c]$, равную единице на одном отрезке числовой оси, скажем, $[a, b-\epsilon]$ и нулю на другом, скажем $[b+\epsilon, c]$. Для того, чтобы гладко склеить эти два кусочка, я решил найти монотонно убывающий многочлен $f(x)$, равный $f(0) = 1$ и $f(1) = 0$, а потом "вставить" его в отрезок $[b-\epsilon, b+\epsilon]$. Для гладкости сшивки должны выполняться условия $f'(0) = f'(1) = 0$. Я решил пойти далее и положить $f^{(n)}(0) = f^{(n)}(1) = 0$ для всех $n = 1,2,\cdots,N$. То есть первые N производных должны быть равны нулю в т. $x = 0$ и $x = 1$. Понятно, что это легко сделать при наперед известном N, но как найти общую формулу? Я некоторое время промучился над этой задачей, пока не решил её следующим способом. Пусть искомая функция $f(x) = 1 + x^{N+1}L_{1}(x)$, где $L_{1}(x)$ — некий многочлен. Тогда у нас выполняется условие $f(0) = 1$ и $f^{(n)}(0) = 0$ (так как первая производная будет

Ресемплинг аудио.

В этом посте расскажу о ресемплинге аудио (в частности, о даунсемплинге), под чем я подразумеваю понижение частоты дискретизации, с которой был записан звук. Известно, что в компьютере непрерывный аудио сигнал представлен в виде семплов (по-русски, измерений), сделанных в равно отстоящие друг от друга промежутки времени. Например, если звук записан с частотой дискретизации 44.1 кГц, то за одну секунду было сделано 44100 семплов. Здесь я расскажу о том, как восстановить исходный непрерывный сигнал по взятым семплам и как выбирать и менять частоту семплирования (или, что то же самое, частоту дискретизации). Преобразование Фурье. Преобразованим Фурье $F(\xi)$ функции $f(x)$ называется следующая функция: $F(\xi) = \int_{-\infty}^{\infty} f(x) e^{-ix\xi}dx$ обратное преобразование определено как $f(x) = \frac{1}{2\pi}\int_{-\infty}^{\infty} F(\xi) e^{ix\xi}d\xi$ Вопрос о том, когда существует преобразование Фурье и обратимо ли оно (т.е. работает ли вторая формула), очень сложе

На что влияет размер (глубина) семпла?

В этом посте я разберу ещё одну характеристику представления аудио на компьютере — размер или глубину семпла. В теореме Шеннона, с которой мы ознакомились в первом посте, сказано, что семплы нужно брать с определенной частотой, чтобы восстановить исходный сигнал. Однако, в ней ничего не сказано о том, сколько памяти компьютера нужно выделить на один семпл. По сути  ней семплы — это обычные вещественные числа. В компьютере же семплы чаще всего представляются целыми числами в диапазоне от $-2^{n-1}$ до $2^{n-1}-1$ (целые числа со знаком), где $n$ — количество бит на один семпл (bps, bits per sample). С количеством бит на семпл связана другая величина — динамический диапазон (или отношение сигнал-шум, что в данном случае то же самое). Он измеряется в децибелах определяется так: $DR = 20 \lg (2^{n}) \approx 6 n$ Динамический диапазон показывает логарифм отношения самого сильного сигнала к самому слабому. Теперь, что будет, если мы выберем $n$ маленьким? Если взять синусоидальную волн