Амплитудно-фазовая демодуляция (APSK)
выполняет APSK демодуляцию входного сигнала z = apskdemod(y,M,radii)y, исходя из заданного количества точек созвездия на звонок PSK, M, и радиус каждого звонка, radii. Описание демодуляции APSK смотрите в APSK Hard Demodulation и APSK Soft Demodulation.
Примечание
apskdemod специально применяется к нескольким кольцевым созвездиям PSK. Для одиночного звонка PSK созвездия, используйте pskdemod.
задает начальное смещение фазы для каждого PSK- звонка модулированного сигнала APSK.z = apskdemod(y,M,radii,phaseoffset)
задает опции, использующие один или несколько аргументы пары "имя-значение", используя любой из предыдущих синтаксисов. Для примера, z = apskdemod(___,Name,Value)'OutputDataType','double' задает требуемый тип выходных данных как double. Задайте аргументы пары "имя-значение" после всех других входных параметров.
Демодулируйте сигнал 16-APSK, который имеет неравное число точек созвездия на каждом круге. Постройте график полученного созвездия.
Задайте векторы для порядка модуляции и радиусов звонка. Сгенерируйте случайные 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 с пользовательским отображением символов. Вычислите жесткий бит принятия решений и проверьте, что вход соответствует выходу.
Задайте векторы для порядка модуляции и радиусов звонка. Сгенерируйте 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 и вычислите мягкие биты.
Задайте векторы для порядка модуляции и радиусов звонка. Сгенерируйте 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Модулированный сигнал APSK, заданный как комплексный скаляр, вектор или матрица. Каждый столбец рассматривается как отдельный канал.
Типы данных: double | single
Поддержка комплексного числа: Да
M - Точки созвездия на звонок PSKСозвездие точки на звонки PSK, заданные как вектор с более чем одним элементом. Векторы элементы указывают количество точек созвездия в каждом PSK- звонка. Первый элемент соответствует самой внутренней окружности, и так далее, до последнего элемента, который соответствует самой внешней окружности. Значения элемента должны быть кратны четырем и сумма должно быть степенью двойки. Порядок модуляции является общим числом точек в сигнальном созвездии и равен сумме вектора элементов, (M)сумма .(M)
Пример: [4 12 16] задает три звонка созвездия PSK с порядком модуляции sum(M) = 32.
Типы данных: double
radii - радиусы звонка PSKPSK кольцевые радиусы, заданные как вектор с той же длиной, что и 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. Первый элемент соответствует самой внутренней окружности, и так далее, до последнего элемента, который соответствует самой внешней окружности. The 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].
целочисленный вектор - Использование пользовательского отображения символов. Вектор должен состоять из суммы уникальные элементы со значениями от 0 до ((M)сумма ). Первый элемент соответствует точке созвездия в первом квадранте самой внутренней окружности с последующими элементами, расположенными против часовой стрелки вокруг звонков. (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 Soft Demodulation для факторов выбора алгоритма.
Этот аргумент пары "имя-значение" применяется только при 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 is log2 (сумма (M)) умножить количество строк в y. Каждый демодулированный символ преобразуется в группу log2 (сумма (M) элементы в столбце, где первый элемент представляет MSB, а последний - LSB. |
'llr' | Значение логарифмического отношения логарифмической правдоподобности для каждого бита | |
'approxllr' | Приблизительное значение логарифмического отношения логарифмической правдоподобности для каждого бита |
Для мягкой демодуляции доступны два алгоритма коэффициента логарифмической правдоподобности (LLR) мягкого решения: точный LLR и приблизительный LLR. В этой таблице сравниваются эти алгоритмы.
| Алгоритм | Точность | Скорость выполнения |
|---|---|---|
| Точный LLR | более точный | более медленное выполнение |
| Аппроксимация LLR | менее точный | более быстрое выполнение |
Для дальнейшего описания этих алгоритмов см. «Точный алгоритм LLR» и «Аппроксимация алгоритма LLR».
Примечание
Точный алгоритм LLR вычисляет экспоненциалы с помощью арифметики конечной точности. Расчет экспоненциалов с очень большими положительными или отрицательными величинами может привести:
Inf или -Inf если отклонение шума очень большое значение
NaN если и отклонение шума, и степень сигнала являются очень маленькими значениями
Когда выход возвращает любое из этих значений, попробуйте использовать приблизительный алгоритм LLR, потому что он не вычисляет экспоненциалов.
[1] Себеста, Дж. «Эффективный метод демодуляции APSK». Избранные темы по прикладной математике, схемам, системам и сигналам (П. Пардалос, Н. Масторакис, В. Младенов, и З. Бойкович, эд.). Вулиагмени, Афины, Греция: WSEAS Press, 2009.
[2] Лю, З., К. Се, К. Пэн и З. Ян. APSK Созвездия с серым Отображением. Буквы IEEE. Том 15, № 12, декабрь 2011, стр. 1271-1273.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.