exponenta event banner

iqcoef2imbal

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

Синтаксис

Описание

пример

[A,P] = iqcoef2imbal(C) преобразует коэффициент компенсатора C по его эквивалентной амплитуде и фазовому дисбалансу.

Примеры

свернуть все

Использовать iqcoef2imbal для оценки амплитуды и фазового дисбаланса для данного комплексного коэффициента. Коэффициенты являются выходными данными step функции IQImbalanceCompensator.

Создайте фильтр передачи с увеличенным косинусом для генерации 64-QAM сигнала.

M = 64;
txFilt = comm.RaisedCosineTransmitFilter;

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

data = randi([0 M-1],100000,1);
dataMod = qammod(data,M);
txSig = step(txFilt,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 Системный объект. Задайте объект компенсатора таким образом, чтобы комплексные коэффициенты были доступны в качестве выходного аргумента.

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

Оцените дисбаланс по последнему значению коэффициента компенсатора.

[ampImbEst,phImbEst] = iqcoef2imbal(coef(end));

Сравните расчетные значения дисбаланса с заданными. Обратите внимание, что есть хорошее согласие.

[ampImb phImb; ampImbEst phImbEst]
ans = 2×2

    2.0000   15.0000
    2.0178   14.5740

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

свернуть все

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

Пример: 0.4+0.6i

Пример: [0.1+0.2i; 0.3+0.5i]

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

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

свернуть все

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

Фазовый дисбаланс в градусах, возвращаемый как действительный вектор с теми же размерами, что и C.

Подробнее

свернуть все

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

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

Учитывая коэффициент масштабирования и поворота, G, коэффициент компенсатора, C, и принятый сигнал, x, компенсированный сигнал, y, имеет вид

y = G [x + Cconj (x)].

В матричной форме это можно переписать как

Y = R X,

где X - вектор 2 на 1, представляющий несбалансированный сигнал [XI, XQ], а Y - вектор 2 на 1, представляющий выходной сигнал компенсатора [YI, YQ].

Матрица R выражается как

R = [1 + Re {C} Im {C} Im {C} 1 − Re {C}]

Чтобы компенсатор полностью устранил дисбаланс I/Q, R = K-1, потому что X = K S, где K - матрица 2 на 2, значения которой определяются амплитудным и фазовым дисбалансом, а S - идеальным сигналом. Определение матрицы M с помощью формы

M = [1 αα1]

И M и M-1 могут считаться вычислением и матрицами вращения, которые соответствуют фактору G. Поскольку K = R-1, продуктом M-1 R K M является матрица идентичности, где M-1 R представляет продукцию компенсатора, и K M представляет неустойчивость I/Q. Коэффициент α выбран таким образом, что

K M = L [Игайнкос (startI) Qгайнкос (/Q) Игайнсин (/I) Qгайнсин (startQ)]

где L - константа. Из этой формы мы можем получить Igain, Qgain, (I, и Q). Для данного фазового дисбаланса, Γ Imb, синфазный и квадратурный углы могут быть выражены как

startI = (δ/2) (ΦImb/180) (Q = λ/2 + (λ/2) (ΦImb/180)

Следовательно, cos (startQ) = sin (startI), а sin (startQ) = cos (startI), так что

L [Игайнкос (startI) Qgaincos (startQ) Игайнсин (startI) Qgainsin (startq Q)] = L [Игайнкос (startI) Qgainsin (startI) Игайнсин (startI) Qgaincos (startI)]

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

K M = [K11 + αK12 αK11 + K12K21 + αK22 αK21 + K22] = L [Игайнкос (, I) Qgainsin (, I) Игаинсин (, I) Qgaincos ((, I)]

Поэтому

(K21 + αK22 )/( K11 + αK12) = (− αK11 + K12 )/( − αK21 + K22) = sin (

Уравнение может быть записано как квадратичное уравнение для решения переменной α, то есть D1α2 + D2α + D3 = 0, где

D1 =−K11K12+K22K21D2=K122+K212−K112−K222D3=K11K12−K21K22

Когда | C | ≤ 1, квадратичное уравнение имеет следующее решение:

α = D2 D2 4D1D32D1

В противном случае, когда | C | > 1, решение имеет следующий вид:

α = D2 + D2 4D1D32D1

Наконец, получают амплитудный дисбаланс, AImb, и фазовый дисбаланс, ФImb.

K′=K[1−αα1]AImb=20log10 (K′11/K′22) ФImb = − 2тан 1 (K′21/K′11) (180/δ)

Примечание

  • Если C вещественный и | C | ≤ 1, фазовый дисбаланс равен 0, а амплитудный дисбаланс равен 20log10 ((1-C )/( 1 + C))

  • Если C вещественный и | C | > 1, фазовый дисбаланс равен 180 ° и амплитудный дисбаланс равен 20log10 ((C + 1 )/( C − 1)).

  • Если C является мнимым, AImb = 0.

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

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

.

См. также

Функции

Объекты

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