iqimbal2coef

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

Синтаксис

Описание

пример

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

Примеры

свернуть все

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

Создайте приподнятый Системный объект передающего фильтра косинуса.

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

Примените указанный разбаланс I/Q.

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);

Удалите разбаланс I/Q путем создания и применения 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=KS

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

Дисбаланс может быть выражен как:

Igain=100.5A/20Qgain=100.5A/20θi=(P2)(π180)θq=π2+(P2)(π180)

Тогда K имеет форму:

K=[Igaincos(θi)Qgaincos(θq)Igainsin(θi)Qgainsin(θq)]

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

Y=RX

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

R=K1

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

y=w1x+w2conj(x)=w1(x+(w2w1)conj(x))

где,

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

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

Примечание

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

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

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

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

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.

См. также

Функции

Объекты

Введенный в R2014b