exponenta event banner

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.

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

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

Создайте последовательность QPSK.

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

Примените амплитудный дисбаланс 1 дБ и фазовый дисбаланс 5 градусов к сигналу QPSK. Применить смещение 0.5 + 0.3i DC.

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. Примените дисбаланс ввода/вывода.

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)

Исправьте дисбаланс ввода/вывода с помощью 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, возникающий в результате дисбаланса, определяется как

g≜gr+igi=[100.5Ia20]+i[10−0.5Ia20].

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

y = Re (x) ⋅gre−i0.5Ip (/180) + iIm (x) ⋅giei0.5Ip (/180),

где g - усиление дисбаланса, а Ip - фазовый дисбаланс в градусах.

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

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

.
Представлен в R2016b