iqimbal

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

Синтаксис

y = iqimbal(x,A)
y = iqimbal(x,A,P)

Описание

пример

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=Ре(x)grei0.5Ip(π/180)+i\Im(x)giei0.5Ip(π/180),

где g является усилением неустойчивости, и Ip является неустойчивостью фазы в градусах.

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

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

Введенный в R2017b