iqimbal2coef

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

Синтаксис

Описание

пример

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]

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

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

Пример: 10

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

Типы данных: 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=[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 = 1i*conj (x).

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

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

Смотрите также

Функции

Объекты

Введенный в R2014b