Николай Коровин (14.04.2017 20:25 - 22:34, просмотров: 518) ответил Nikolay_Po на В качестве фазового детектора использую свой кусок кода - анализируется квадрант и отношение амплитуд синуса и косинуса. Угол берётся из быстрой аппроксимации отношения косинуса к синусу на участке 0..1 этого отношения. Если отношение больше 1,
Две фазы вроде бы скользящая рамка хорошо берёт… нужен кольцевой буфер длиной в колебание и быстро складывать-вычитать. Есть две суммы, А и Б. Каждый сэмпл прибавляем к Б, тот, что был полколебания назад, прибавляем к А и вычитаем из Б, тот, что был колебание назад — вычитаем из А и забываем.
Специальный индекс хранит, сколько сэмплов назад было прохождение границы бита. Когда он становится равен целому колебанию минус дельта, начинаем искать максимум модуля А-Б и ищем до целого колебания плюс дельта. Естественно, новый максимум становится следующей границей бита, а знак А-Б — значением бита.
Дельту чуть ли не с четверть колебания можно сделать, тогда она наводится и захватывает фазу даже при дичайших Доплерах. Но, как правило, лишнее — вредно.
По сути, это умножение на меандр. Плюсы — содержит в себе все фильтры по паразитным частотам на автомате, и сверху, и снизу; нересурсоёмкий до неприличия; тупой, простой и даже очень убегающую фазу хорошо подстраивает. Минус — сам по себе является приближённым, на меандр же умножаем. Мировые рекорды отношения сигнал/шум с ним явно не поставишь.
Ну, или я опять продолбился в глаза и упустил ключевой момент в задаче, как я это обычно делаю.