iqimbal2coef

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

Синтаксис

C = iqimbal2coef(A,P)

Описание

пример

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

Примеры

свернуть все

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

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

txRCosFilt = comm.RaisedCosineTransmitFilter;

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

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]

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

Неустойчивость фазы в градусах, заданный как строка с действительным знаком или вектор-столбец.

Пример: 10

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

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

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

свернуть все

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

Больше о

свернуть все

Компенсация Неустойчивости I/Q

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

Задайте S и X как 2 1 векторы, представляющие меня и компоненты 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=[Igainпотому что(θi)Qgainпотому что(θq)Igainsin(θi)Qgainsin(θq)]

Вектор Y задан как компенсатор неустойчивости I/Q вывод.

Y=RX

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

R=K1

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

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

где,

Ре{w1}=(R11+R22)/2\Im{w1}=(R21R12)/2Ре{w2}=(R11R22)/2\Im{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