iqimbal

Примените разбаланс I/Q к входному сигналу

Описание

пример

y = iqimbal(x,A) применяет I/Q амплитудный дисбаланс A к входному сигналу x.

пример

y = iqimbal(x,A,P) применяет I/Q амплитудный дисбаланс A и разбаланс фазы P к входному сигналу x.

Примеры

свернуть все

Сгенерируйте сигнал 16-QAM. Отобразите график поля точек.

x = qammod(randi([0 15],1000,1),16);
h = scatterplot(x);
hold on

Figure Scatter Plot contains an axes. The axes with title Scatter plot contains an object of type line. This object represents Channel 1.

Применить амплитудный дисбаланс 10 дБ. Положительный амплитудный дисбаланс вызывает горизонтальное растяжение созвездия.

y = iqimbal(x,10);
scatterplot(y,1,0,'ro',h)

Figure Scatter Plot contains an axes. The axes with title Scatter plot contains 2 objects of type line. This object represents Channel 1.

Применить амплитудный дисбаланс -10 дБ. Отрицательный амплитудный дисбаланс вызывает вертикальное растяжение созвездия.

z = iqimbal(x,-10);
scatterplot(z,1,0,'k*',h)
hold off

Figure Scatter Plot contains an axes. The axes with title Scatter plot contains 3 objects of type line. This object represents Channel 1.

Сгенерируйте сигнал 16-QAM, имеющий два канала.

x = qammod(randi([0 15],1000,2),16);

Примените амплитудный дисбаланс 3 дБ и 10 степени разбаланса фазы к первому каналу. Примените амплитудный дисбаланс -5 дБ и разбаланс фазы -15 степеней ко второму каналу.

y = iqimbal(x,[3 -5],[10 -15]);

Постройте график созвездия обоих каналов ослабленного сигнала.

h = scatterplot(y(:,1),1,0,'b*');
hold on
scatterplot(y(:,2),1,0,'ro',h)
hold off

Figure Scatter Plot contains an axes. The axes with title Scatter plot contains 2 objects of type line. This object represents Channel 1.

Первый канал растянут горизонтально, а второй - вертикально.

Примените 1 дБ, 5 степени разбаланса I/Q к сигналу QPSK. Затем примените смещение постоянного тока. Визуализируйте смещение с помощью анализатора спектра.

Сгенерируйте последовательность QPSK.

x = pskmod(randi([0 3],1e4,1),4,pi/4);

Примените амплитудный дисбаланс 1 дБ и 5 степеней разбаланса фазы к сигналу QPSK. Применить смещение постоянного тока 0,5 + 0,3i.

y = iqimbal(x,1,5);
z = y + complex(0.5,0.3);

Постройте график спектра ослабленного сигнала.

sa = dsp.SpectrumAnalyzer('SampleRate',1000,'YLimits',[-50 30]);
sa(z)

Отобразите соответствующий график поля точек.

scatterplot(z)
grid

Эффект разбаланса I/Q и смещения DC наблюдаем.

Сгенерируйте случайные данные и примените 8-PSK модуляцию.

data = randi([0 7],2000,1);
txSig = pskmod(data,8,pi/8);

Пропустите переданный сигнал через канал AWGN. Применить разбаланс I/Q.

noisySig = awgn(txSig,20);
rxSig = iqimbal(noisySig,2,20);

Создайте объект сигнального созвездия, который отображает только последние 1000 символов. Постройте график созвездия ослабленного сигнала.

cd = comm.ConstellationDiagram('ReferenceConstellation',pskmod(0:7,8,pi/8), ...
    'SymbolsToDisplaySource','Property','SymbolsToDisplay',1000);
cd(rxSig)

Исправьте разбаланс I/Q при помощи comm.IQImbalanceCompensator объект. Постройте график созвездия сигнала после компенсации.

iqComp = comm.IQImbalanceCompensator('StepSize',1e-3);
compSig = iqComp(rxSig);

cd(compSig)

Компенсатор устраняет разбаланс I/Q.

Входные параметры

свернуть все

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

Пример: pskmod(randi([0 3],100,1),4,pi/4)

Типы данных: single | double
Поддержка комплексного числа: Да

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

  • Если A является скаляром, функция применяет тот же амплитудный дисбаланс к каждому каналу.

  • Если A является вектором, затем каждый элемент задает амплитудный дисбаланс, который применяется к соответствующему столбцу (каналу) входного сигнала. Количество элементов в A должно равняться количеству столбцов в x.

Пример: 3

Пример: [0 5]

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

Разбаланс фазы в степени, заданная как действительный скаляр или вектор-строка.

  • Если P опущен, используется разбаланс фазы нуля степеней.

  • Если P является скаляром, функция применяет один и тот же разбаланс фазы к каждому каналу.

  • Если P является вектором, затем каждый элемент задает разбаланс фазы, который применяется к соответствующему столбцу (каналу) входного сигнала. Количество элементов в P должно равняться количеству столбцов в x.

Пример: 10

Пример: [2.5 7]

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

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

свернуть все

Выходной сигнал, возвращенный как вектор или матрица, имеющие те же размерности, что и x. Количество столбцов в y соответствует количеству каналов.

Типы данных: single | double
Поддержка комплексного числа: Да

Алгоритмы

iqimbal функция применяет амплитуду I/Q и разбаланса фазы к входному сигналу.

Учитывая амплитудный дисбаланс, Ia в дБ, коэффициент усиления, g, являющийся результатом дисбаланса, определяется как

ggr+igi=[100.5Ia20]+i[100.5Ia20].

Применение разбаланса I/Q к входному сигналу x приводит к такому y выходного сигнала, что

y=Re(x)grei0.5Ip(π/180)+iIm(x)giei0.5Ip(π/180),

где g - коэффициент усиления дисбаланса, а Ip - разбаланс фазы в степени.

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

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

.
Введенный в R2016b