Демодуляция амплитудного манипулирования сдвига фазы (APSK)
z = apskdemod(y,M,radii)
z = apskdemod(y,M,radii,phaseoffset)
z = apskdemod(___,Name,Value)
выполняет демодуляцию 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-ary символы данных.
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. Сгенерируйте 10 000 символов случайных битных данных.
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. Первый элемент соответствует самому внутреннему кругу, и так далее, до последнего элемента, который соответствует наиболее удаленному кругу. Значения элемента должны быть множителями четыре, и
должен быть степенью двойки. Порядок модуляции является общим количеством точек в сигнальном созвездии и равняется сумме векторных элементов, 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 совокупности. Внутренний звонок имеет смещение фазы пи/4, второй звонок имеет смещение фазы пи/12, и внешний звонок имеет смещение фазы пи/16.
Типы данных: double
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
y = apskdemod(x,M,radii,'OutputType','bit','OutputDataType','single');
'SymbolMapping'
— Отображение символа'gray'
| 'contourwise-gray'
| целочисленный векторОтображение символа, заданное как пара, разделенная запятой, состоящая из SymbolMapping
и одно из следующего:
'contourwise-gray'
— Использование Серое отображение вдоль контура в размерности фазы.
серый
Использование Грэй, сопоставляющий вдоль контура и в амплитуде и в размерностях фазы. Для отображения символа Грэя все значения для M
должны быть равными, и все значения для phaseoffset
должны быть равными. Для описания используемого отображения Грэя см. [2].
целочисленный вектор — Использование пользовательское отображение символа. Вектор должен состоять из
уникальные элементы со значениями от 0 до (sum(M)
). Первый элемент соответствует точке совокупности в первом квадранте самого внутреннего круга с последующими элементами, расположенными против часовой стрелки вокруг звонков PSK. sum(M)-1
Отображение символа по умолчанию зависит от M
и phaseOffset
. Когда все элементы M
и phaseOffset
равны, значением по умолчанию является 'gray'
. Для всех других случаев значением по умолчанию является 'contourwise-gray'
.
Типы данных: double
| char
| string
'OutputType'
'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
.
Типы данных: логический
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”. Выбранные Темы на Прикладной математике, Схемах, Системах и Сигналах (П. Пардэлос, Н. Мэсторакис, В. Младенов, и З. Бойкович, редакторы). Воулиагмени, Афины, Греция: Нажатие WSEAS, 2009.
[2] Лю, Z., Ц. Се, К. Пенг и З. Янг. "Совокупность APSK с Серым Отображением". Коммуникационные Буквы IEEE. Издание 15, Номер 12, декабрь 2011, стр 1271–1273.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.