exponenta event banner

iqimbal2coef

Преобразование дисбаланса I/Q в коэффициент компенсатора

Синтаксис

Описание

пример

C = iqimbal2coef(A,P) преобразует амплитуду I/Q и фазовый дисбаланс в эквивалентный коэффициент компенсатора.

Примеры

свернуть все

Создание коэффициентов для системы компенсации дисбаланса I/Q object™ с использованием iqimbal2coef. Компенсатор корректирует дисбаланс I/Q, используя сгенерированные коэффициенты.

Создание объекта System с увеличенным косинусным фильтром передачи.

txRCosFilt = comm.RaisedCosineTransmitFilter;

Модулировать и фильтровать случайные 64-арные символы.

M= 64;
data = randi([0 M-1],100000,1);
dataMod = qammod(data,M);
txSig = txRCosFilt(dataMod);

Задание амплитуды и фазового дисбаланса.

ampImb = 2; % dB
phImb = 15; % degrees

Примените указанный дисбаланс ввода/вывода.

gainI = 10.^(0.5*ampImb/20);
gainQ = 10.^(-0.5*ampImb/20);
imbI = real(txSig)*gainI*exp(-0.5i*phImb*pi/180);
imbQ = imag(txSig)*gainQ*exp(1i*(pi/2 + 0.5*phImb*pi/180));
rxSig = imbI + imbQ;

Нормализуйте мощность принимаемого сигнала.

rxSig = rxSig/std(rxSig);

Удаление дисбаланса ввода/вывода путем создания и применения comm.IQImbalanceCompensator объект. Установите компенсатор таким образом, чтобы комплексные коэффициенты были доступны в качестве выходного аргумента.

iqComp = comm.IQImbalanceCompensator('CoefficientOutputPort',true);
[compSig,coef] = iqComp(rxSig);

Сравните окончательный коэффициент компенсатора с коэффициентом, генерируемым iqimbal2coef функция. Заметьте, что есть хорошее согласие.

idealcoef = iqimbal2coef(ampImb,phImb);
[coef(end); idealcoef]
ans = 2×1 complex

  -0.1137 + 0.1296i
  -0.1126 + 0.1334i

Входные аргументы

свернуть все

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

Пример: 3

Пример: [0; 5]

Типы данных: double

Фазовый дисбаланс в градусах, заданный как действительная строка или вектор столбца.

Пример: 10

Пример: [15; 45]

Типы данных: double

Выходные аргументы

свернуть все

Коэффициент, который идеально компенсирует дисбаланс I/Q, возвращаемый в виде комплексного вектора, имеющего те же размеры, что и A и P.

Подробнее

свернуть все

I/Q Компенсация дисбаланса

Функция iqimbal2coef является вспомогательной функцией для comm.IQImbalanceCompensator object™ системы.

Определите S и X как векторы 2 на 1, представляющие I и Q компоненты идеального и I/Q несбалансированных сигналов соответственно.

X=K⋅S

где K - матрица 2 на 2, значения которой определяются амплитудным дисбалансом, A и фазовым дисбалансом, P. A выражается в дБ, а P выражается в градусах.

Дисбаланс можно выразить следующим образом:

Игаин = 100,5A/20Qгайн = 10 0,5A/20ü i = (P2) (security180), (δ q) = security2 + (P2) (security180)

Тогда К имеет вид:

К = [Игайнкос (starti) Qgaincos (startq) Игайнсин (starti) Qgainsin (startq)]

Вектор Y определяется как выходной сигнал компенсатора дисбаланса I/Q.

Y=R⋅X

Для того, чтобы компенсатор полностью устранил дисбаланс I/Q, R должен быть матричной инверсией K, а именно:

R = K − 1

Используя сложную нотацию, вектор Y можно переписать как:

y=w1x+w2conj (x) =w1 (x + (w2w1) союз (x))

где,

Re {w1} = (R11 + R22 )/2Im {w1} = (R21 R12 )/2Re {w2} = (R11 R22 )/2Im {w2} = (R21 + R12 )/2

Выход функции - w2/w1. Чтобы точно получить исходный сигнал, выходной сигнал компенсатора должен быть масштабирован и повернут на комплексное число w1.

Примечание

Есть случаи, для которых выход iqimbal2coef ненадежен.

  • Если фазовый дисбаланс равен ± 90 °, синфазная и квадратурная компоненты станут колинейными; следовательно, дисбаланс I/Q не может быть компенсирован.

  • Если амплитудный дисбаланс равен 0 дБ, а фазовый дисбаланс равен 180 °, w1 = 0 и w2 = 1i; поэтому, компенсатор принимает форму y = 1i*conj (x).

Расширенные возможности

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.

См. также

Функции

Объекты

Представлен в R2014b