IQ Imbalance Compensation
25.02.2021
Здравствуйте!
Мне нужно скорректировать ошибку фазы между компонентами квадратурного сигнала (cos и sin).
Допустим их разность фаз не 90 а 92 градуса. Требуется убрать лишние два градуса.
Методом частотных выборок я рассчитал корректирующий фильтр. Разброс амплитуд он корректирует правильно, а вот с фазовой ошибкой какая-то непонятка.
Фаза корректируется с точностью до наоборот, например:
При входной ошибке фазы +1 градусов, на выходе получаю ошибку +2 градусов.
При входной ошибке фазы +10 градусов, на выходе получаю ошибку +20 градусов.
При входной ошибке фазы -10 градусов, на выходе получаю ошибку -20 градусов.
Т.е. фазовая ошибка вычисляется правильно, но неправильно применяется, знак не тот.
Коллеги, можете что-то подсказать?
Ответы
Конкретика? Сложно что-то сказать не имея данных. Что хотелось, что получилось, какие выборки брали . . . ?
Что хотелось, что получилось - вроде выше всё описал что хотелось.
В полосе 0...Fs/2 я формирую 30 квадратурных пилотов так, чтобы их частоты попали точно в бины FFT.
После этого выполняю FFT для каждого пилота, причём отдельно для реальной и мнимой части.На выходе этих FFT из нужного бина беру значение сигнала и укладываю в векторы раздельно для real и для imag входных сигналов. Потом делю первый вектор на второй и получаю вектор ошибки(учитывая фазовый сдвиг 90 градусов между компонентами пилотов). Этот вектор пропускаю через IFFT и получаю ИХ корректирующего фильтра через который пропускаю мнимую часть входного сигнала.
Теперь внося в пилоты некие ошибки (IQ Imbalance) на выходе корректора должен получить компенсацию этих ошибок по амплитуде и по фазе. По амплитуде компенсация выполняется, фильтр подтягивает амплитуду мнимой части к реальной, а по фазе происходит так как я описал выше.
При входной ошибке фазы +1 градусов от 90, на выходе получаю ошибку +2 градусов.
При входной ошибке фазы +10 градусов от 90, на выходе получаю ошибку +20 градусов.
При входной ошибке фазы -10 градусов от 90, на выходе получаю ошибку -20 градусов.
Во всех случаях ошибка должна быть 0 градусов относительно фазы 90 градусов. Т.е. фазовая ошибка вычисляется правильно, но неправильно применяется, знак не тот.
Вкратце всё.
А с противоположным знаком не надо взять перед ИФФТ?
Не, со знаком у меня всё нормально. Я уже нашёл ошибку, всё работает отлично, мой косяк.
Спасибо за неравнодушие!
раньше путался в этом
Коллеги, получиться то у меня получилось но только для одной зоны Найквиста, либо для первой либо для второй. Позволяет ли этот метод реализовать фильтр в полосе -Fs/2...+Fs/2? Я пока обхожусь двумя корректирующими фильтрами, для каждой зоны свой, но может есть более красивое решение?
Философский вопрос: а на практике отрицательная полоса частот бывает? :)
А если я скажу что хочу полосу 0...Fs разве это изменит что то в математике?