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

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

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

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

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

Сгенерируйте 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

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

Примените 1 дБ, 5 разбаланса I/Q степени к сигналу 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. Примените разбаланс I/Q.

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

Создайте объект схемы созвездия, который отображает только последние 1 000 символов. Постройте схему созвездия сигнала, которому повреждают.

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++ с помощью MATLAB® Coder™.

Введенный в R2017b