Амплитудная фазовая манипуляция (APSK) демодуляция
выполняет демодуляцию входного сигнала APSK z = apskdemod(y,M,radii)y, на основе указанного количества точек созвездия на кольцо PSK, Mи радиус каждого кольца PSK, radii. Описание APSK демодуляции см. в разделах APSK Жесткая демодуляция и APSK Мягкая демодуляция.
Примечание
apskdemod, в частности, относится к множеству кольцевых комбинаций PSK. Для одиночной кольцевой комбинации PSK используйте pskdemod.
задает начальное фазовое смещение для каждого кольца PSK модулированного сигнала APSK.z = apskdemod(y,M,radii,phaseoffset)
задает параметры, использующие один или несколько аргументов пары имя-значение, используя любой из предыдущих синтаксисов. Например, z = apskdemod(___,Name,Value)'OutputDataType','double' задает требуемый тип выходных данных как двойной. Укажите аргументы пары имя-значение после всех других входных аргументов.
Демодулируйте сигнал 16-APSK, который имеет неравное количество точек созвездия на каждой окружности. Постройте график принятого созвездия.
Определите векторы для порядка модуляции и радиусов кольца PSK. Генерировать случайные 16-арные символы данных.
M = [4 12]; radii = [1 2]; modOrder = sum(M); x = randi([0 modOrder-1],1000,1);
Примените модуляцию APSK к данным.
txSig = apskmod(x,M,radii);
Пропускают модулированный сигнал через шумный канал.
snr = 20; % dB rxSig = awgn(txSig,snr,'measured');
Постройте график точек передаваемого (опорного) сигнала и шумных точек принимаемого сигнала.
plot(rxSig,'b*') hold on grid plot(txSig,'r+') xlim([-3 3]) ylim([-3 3]) xlabel('In-Phase') ylabel('Quadrature') legend('Received constellation','Reference constellation')

Демодулируют принятый сигнал и сравнивают с входными данными.
z = apskdemod(rxSig,M,radii); isequal(x,z)
ans = logical
1
Демодуляция сигнала 64-APSK с помощью пользовательского отображения символов. Вычислите выходной бит жесткого решения и убедитесь, что входной сигнал соответствует выходному сигналу.
Определите векторы для порядка модуляции и радиусов кольца PSK. Создайте 100 символов случайного битового ввода.
M = [8 12 16 28]; % 4-PSK circles
modOrder = sum(M);
radii = [0.5 1 1.3 2];
x = randi([0 1],100*log2(modOrder),1);Создайте пользовательский вектор отображения символов для двоичного отображения.
cmap = 0:63;
Модулируйте данные и постройте график созвездия.
y = apskmod(x,M,radii,'SymbolMapping',cmap,'inputType','bit', ... 'PlotConstellation',true);

Демодулируйте принятый сигнал.
z = apskdemod(y,M,radii,'SymbolMapping',cmap,'OutputType','bit');
Убедитесь, что демодулированный сигнал равен исходным данным.
isequal(x,z)
ans = logical
1
Демодулировать 32-APSK сигнал и вычислять мягкие биты.
Определите векторы для порядка модуляции и радиусов кольца PSK. Генерировать 10000 символов случайных битовых данных.
M = [16 16]; modOrder = sum(M); radii = [0.6 1.2]; numSym = 10000; x = randi([0 1], numSym*log2(modOrder),1);
Создайте опорное созвездие. Создайте объект диаграммы созвездий.
refAPSK = apskmod(0:modOrder-1,M,radii); constDiagAPSK = comm.ConstellationDiagram('ReferenceConstellation',refAPSK, ... 'Title','Received Symbols','XLimits',[-2 2],'YLimits',[-2 2]);
Модулировать данные.
txSig = apskmod(x,M,radii,'InputType','bit'); sigPow = var(txSig);
Пропускайте сигнал по шумному каналу.
snr = 15;
rxSig = awgn(txSig,snr,sigPow,'linear');
Постройте график опорных и принятых символов созвездия.
constDiagAPSK(rxSig)

Демодулируйте сигнал и вычисляйте мягкие биты.
z = apskdemod(rxSig,M,radii,'OutputType','approxllr', ... 'NoiseVariance',sigPow/snr);
y - модулированный сигнал APSKАПСК-модулированный сигнал, заданный как комплексный скаляр, вектор или матрица. Каждый столбец рассматривается как независимый канал.
Типы данных: double | single
Поддержка комплексного номера: Да
M - Точки созвездия на кольцо PSKТочки созвездия на кольцо PSK, заданные как вектор с несколькими элементами. Векторные элементы указывают количество точек созвездия в каждом кольце PSK. Первый элемент соответствует самой внутренней окружности, и так далее, до последнего элемента, что соответствует самой внешней окружности. Значения элементов должны быть кратны четырем и sum( должно быть, сила двух. Порядок модуляции представляет собой общее количество точек в сигнальной совокупности и равен сумме векторных элементов. M)sum(.M)
Пример: [4 12 16] определяет совокупность колец трех PSK с порядком модуляции sum(M) = 32.
Типы данных: double
radii - радиусы кольца PSKРадиусы кольца PSK, заданные как вектор с той же длиной, что и M. Первый элемент соответствует самой внутренней окружности, и так далее, до последнего элемента, что соответствует самой внешней окружности. Элементы должны быть положительными и располагаться в возрастающем порядке.
Пример: [0.5 1 2] определяет радиусы кольца PSK созвездия. Внутреннее кольцо имеет радиус 0,5, второе кольцо имеет радиус 1,0, а внешнее кольцо имеет радиус 2,0.
Типы данных: double
phaseoffset - Фазовые смещения кольца PSK[pi/M(1) pi/M(2) … pi/M(end)] (по умолчанию) | скаляр | векторФазовое смещение каждого кольца PSK в радианах, указанное как скаляр или вектор с той же длиной, что и M. Первый элемент соответствует самой внутренней окружности, и так далее, до последнего элемента, что соответствует самой внешней окружности. phaseoffset может быть скаляром, только если все элементы M имеют одно и то же значение.
Пример: [pi/4 pi/12 pi/16] определяет три каскада фазовых смещений кольца PSK. Внутреннее кольцо имеет фазовый сдвиг pi/4, второе кольцо имеет фазовый сдвиг pi/12, а внешнее кольцо имеет фазовый сдвиг pi/16.
Типы данных: double
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
y = apskdemod(x,M,radii,'OutputType','bit','OutputDataType','single');'SymbolMapping' - Отображение символов'gray' | 'contourwise-gray' | целочисленный векторСопоставление символов, указанное как пара, разделенная запятыми, состоящая из SymbolMapping и одно из следующих:
'contourwise-gray' - использует отображение серого по контуру в фазовом размере.
'gray' - использует отображение Грея вдоль контура как в амплитудных, так и в фазовых размерах. Для отображения символов серого цвета все значения для M должны быть равны и все значения для phaseoffset должно быть равным. Описание используемого отображения серого см. в [2].
целочисленный вектор - использование пользовательского сопоставления символов. Вектор должен состоять из sum( уникальные элементы со значениями от 0 до (M)sum(). Первый элемент соответствует точке созвездия в первом квадранте самой внутренней окружности, при этом последующие элементы расположены против часовой стрелки вокруг колец PSK. M)-1
Сопоставление символов по умолчанию зависит от M и phaseOffset. Когда все элементы M и phaseOffset равны, по умолчанию 'gray'. Для всех остальных случаев значением по умолчанию является 'contourwise-gray'.
Типы данных: double | char | string
'OutputType' - Тип вывода'integer' (по умолчанию) | 'bit' | 'llr' | 'approxllr'Тип вывода, указанный как разделенная запятыми пара, состоящая из 'OutputType' и 'integer', 'bit', 'llr', или 'approxllr'. Описание возвращенных выходных данных см. в разделе z.
Типы данных: char | string
'OutputDataType' - Тип выходных данных'double' (по умолчанию) | ...Тип выходных данных, указанный как разделенная запятыми пара, состоящая из OutputDataType и один из указанных типов данных. Допустимые значения для OutputDataType зависят от OutputType значение.
OutputType Стоимость | Приемлемый OutputDataType Ценности |
|---|---|
'integer' | 'double', 'single', 'int8', 'int16', 'int32', 'uint8', 'uint16', или 'uint32' |
'bit' | 'double', 'single', 'int8', 'int16', 'int32', 'uint8', 'uint16', 'uint32', или 'logical' |
Этот аргумент пары имя-значение применяется только в том случае, если OutputType имеет значение 'integer' или 'bit'.
Типы данных: char | string
'NoiseVariance' - Дисперсия шума1 (по умолчанию) | положительный скаляр | вектор положительных значенийДисперсия шума, указанная как разделенная запятыми пара, состоящая из NoiseVariance и положительный скаляр или вектор положительных значений.
Если задано как скаляр, то одно и то же значение дисперсии шума используется для всех входных элементов.
Если указан как вектор, длина вектора должна быть равна количеству столбцов во входном сигнале.
Когда дисперсия шума или мощность сигнала приводят к вычислениям, включающим в себя экстремальные положительные или отрицательные величины, см. гибкую демодуляцию APSK для рассмотрения выбора алгоритма.
Этот аргумент пары имя-значение применяется только в том случае, если OutputType имеет значение 'llr' или 'approxllr'.
Типы данных: double
'PlotConstellation' - Опция для печати совокупностиfalse (по умолчанию) | trueОпция для печати совокупности, заданной как разделенная запятыми пара, состоящая из 'PlotConstellation' и логический скаляр. Для построения графика созвездия установите PlotConstellation кому true.
Типы данных: logical
z - Демодулированный сигналДемодулированный сигнал, возвращаемый как скаляр, вектор или матрица. Размеры z зависят от указанного OutputType значение.
OutputType Стоимость | Возвращаемое значение apskdemod | Размеры z |
|---|---|---|
'integer' | Демодулированные целочисленные значения от 0 до (сумма (M) – 1) | z имеет те же размеры, что и входные y. |
'bit' | Демодулированные биты | Количество строк в z является log2 (сумма (M)) умножить количество строк в y. Каждый демодулированный символ отображается в группу log2 (сумма (M)) элементы в столбце, где первый элемент представляет MSB, а последний элемент представляет LSB. |
'llr' | Логарифмическое отношение правдоподобия для каждого бита | |
'approxllr' | Приблизительное значение логарифмического отношения правдоподобия для каждого бита |
Для мягкой демодуляции доступны два алгоритма отношения логарифмического правдоподобия (LLR) с мягким решением: точное LLR и приблизительное LLR. В этой таблице сравниваются эти алгоритмы.
| Алгоритм | Точность | Скорость выполнения |
|---|---|---|
| Точное LLR | более точная | более медленное выполнение |
| Приблизительный LLR | менее точная | более быстрое выполнение |
Дальнейшее описание этих алгоритмов см. в разделах Точный алгоритм LLR и Приблизительный алгоритм LLR.
Примечание
Алгоритм точного LLR вычисляет экспоненты, используя арифметику конечной точности. Вычисление экспонентов с очень большими положительными или отрицательными величинами может дать:
Inf или -Inf если дисперсия шума очень велика
NaN если дисперсия шума и мощность сигнала очень малы
Когда выходные данные возвращают любое из этих значений, попробуйте использовать алгоритм аппроксимации LLR, поскольку он не вычисляет экспоненты.
[1] Sebesta, J. «Эффективный способ для демодуляции APSK». Избранные темы по прикладной математике, схемам, системам и сигналам (П. Пардалос, Н. Масторакис, В. Младенов, и З. Бойкович, ред.). Vouliagmeni, Афины, Греция: WSEAS Press, 2009.
[2] Лю, З., К. Се, К. Пэн и З. Ян. «APSK Constellation с серым отображением». Информационные письма IEEE. Том 15, номер 12, декабрь 2011 г., стр. 1271-1273.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.