April 23rd, 2021

worklog: преобразование Гильберта

Когда-то я уже пытался освоить чорную магею ПГ, а вот сейчас опять засел за.
Вроде заработало (на модели, не на реальной железяке), но есть нюанс: вероятно, из-за неравномерности АЧХ преобразователя, низкочастотный хвост обрабатываемого сигнала заворачивается вокруг новой несущей (она очень хорошо, кстати, подавляется - более сотни дБ: фактицки, в нуль). То есть, сигнал-то переносится по спектру, с этим всё хорошо, но в итоге получается нужный сигнал и "ещё пол-сигнала" чуть ниже. Или чуть повыше, если спектр переворачивать.
При прочих равных, чем больше точек в характеристике ПГ, тем короче этот хвост, но избавиться от него совсем не получитсЯ, если не хитрить:
Во-1ых, надо сразу обрезать спектр входного сигнала снизу. В практических целях - где-то в районе 25..300 герц нормально будет.
Во-2ых, работу ПГ надо осуществлять на самой низкой частоте дискретизации из возможных, ибо ширина "хвостов" пропорциональна частоте дискретизации.

Итого, если при дискретизации 48кГц нужно 256 точек, чтобы хвост в районе от 0 до 300 Гц исчез бы под уровнем шумов, то при дискретизации 8 кГц хватит 42,6(6) точек. Но т.к. нецелое количество коэффициентов нереализуемо в принципе, а ближайшее нечётное (43) не красиво, то можно взять ПГ на 48 или даже 64 точки и получить очень даже приличное качество работы, при этом расход ресурса оказывается совсем невелик.

Возможно, выбором оконной функции (сейчас - окно Хэмминга) можно ещё ослабить требования к ПГ и обойтись меньшим количеством коэффициентов.

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