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 object. The axes object 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 object. The axes object 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 object. The axes object 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 object. The axes object with title Scatter plot contains 2 objects of type line. This object represents Channel 1.

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

Примените 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