dvbsapskdemod

DVB-S2/S2X/SH стандартно-специфичная демодуляция амплитудного манипулирования сдвига фазы (APSK)

Синтаксис

z = dvbsapskdemod(y,M,stdSuffix)
z = dvbsapskdemod(y,M,stdSuffix,codeIDF)
z = dvbsapskdemod(y,M,stdSuffix,codeIDF,frameLength)
z = dvbsapskdemod(___,Name,Value)

Описание

пример

z = dvbsapskdemod(y,M,stdSuffix) демодулирует входной сигнал APSK, y, который модулировался в соответствии со стандартом цифрового видео широковещательно передается (DVB), идентифицированным stdSuffix и порядком модуляции, M. Для описания совместимой DVB демодуляции APSK смотрите DVB Совместимый APSK Трудная Демодуляция и DVB Совместимый APSK Мягкая Демодуляция.

z = dvbsapskdemod(y,M,stdSuffix,codeIDF) задает идентификатор кода codeIDF, чтобы использовать при выборе параметров демодуляции.

z = dvbsapskdemod(y,M,stdSuffix,codeIDF,frameLength) задает codeIDF и frameLength, чтобы использовать при выборе параметров демодуляции.

пример

z = dvbsapskdemod(___,Name,Value) задает опции с помощью одного или нескольких аргументов пары "имя-значение" с помощью любого из предыдущих синтаксисов. Например, 'OutputDataType','double' задает желаемый тип выходных данных. Задайте аргументы пары "имя-значение" после всех других входных параметров.

Примеры

свернуть все

Демодулируйте сигнал 64-APSK, который модулировался, как задано в DVB-S2X. Вычислите целое число трудного решения вывод и проверьте, что вывод совпадает с входом.

Установите порядок модуляции и стандартный суффикс. Сгенерируйте случайные данные.

M = 64;
std = 's2x';
x = randi([0 M-1],1000,1);

Модулируйте данные.

y = dvbsapskmod(x,M,std);

Демодулируйте полученный сигнал. Сравните демодулируемые данные с исходными данными.

z = dvbsapskdemod(y,M,std);
isequal(z,x)
ans = logical
   1

Демодулируйте сигнал 32-APSK, который модулировался, как задано в DVB-S2. Вычислите бит трудного решения вывод и проверьте, что вывод совпадает с входом.

Установите порядок модуляции, стандартный суффикс и идентификатор кода. Сгенерируйте случайные битные данные.

M = 32;
std = 's2';
codeIDF = '4/5';
numBitsPerSym = log2(M);
x = randi([0 1],100*numBitsPerSym,1,'uint32');

Модулируйте данные. Используйте пару "имя-значение", чтобы задать битные входные данные.

y = dvbsapskmod(x,M,std,codeIDF,'InputType','bit');

Демодулируйте полученный сигнал. Сравните демодулируемые данные с исходными данными.

z = dvbsapskdemod(y,M,std,'4/5','OutputType','bit', ...
    'OutputDataType','uint32');
isequal(z,x)
ans = logical
   1

Демодулируйте DVB-SH, совместимый 16-APSK сигнализирует и вычисляет мягкие биты.

Установите порядок модуляции и сгенерируйте случайную последовательность битов.

M = 16;
std = 'sh';
numSym = 20000;
numBitsPerSym = log2(M);
x = randi([0 1],numSym*numBitsPerSym,1);

Модулируйте данные. Используйте пару "имя-значение", чтобы задать битные входные данные.

txSig = dvbsapskmod(x,M,std,'InputType','bit');

Передайте модулируемый сигнал через шумный канал.

rxSig = awgn(txSig,10,'measured');

Просмотрите совокупность полученного сигнала с помощью графика рассеивания.

scatterplot(rxSig) 

DVB-SH совместимые совокупности имеет модульную среднюю силу. Демодулируйте сигнал, вычисляя мягкие биты с помощью аппроксимированного алгоритма LLR.

z = dvbsapskdemod(rxSig,M,std,'OutputType','approxllr', ...
     'NoiseVariance',0.1);

Входные параметры

свернуть все

APSK модулируемый сигнал, заданный как комплексный скаляр, вектор или матрица. Когда y является матрицей, каждый столбец обработан как независимый канал.

y должен модулироваться в соответствии с Цифровым телевидением (DVB) - стандарт Спутниковой связи DVB-S2, DVB-S2X или DVB-SH. Для получения дополнительной информации см. [1], [2], и [3].

Типы данных: single | double
Поддержка комплексного числа: Да

Порядок модуляции, заданный как степень двойки. Порядок модуляции задает общее количество точек в сигнальном созвездии.

Типы данных: double

Стандартный суффикс для варианта модуляции DVBS, заданного как 's2', 's2x' или 's2h'.

Типы данных: char | string

Идентификатор кода, заданный как вектор символов или строка. Эта таблица приводит приемлемые значения codeIDF.

Порядок совокупности (M)Применимый стандарт (stdSuffix)Приемлемый идентификатор кода (CodeIDF) значения
16

's2' или 's2x'

'2/3', '3/4', '4/5', '5/6', '8/9', '9/10'

16

's2x'

'26/45', '3/5', '28/45', '23/36', '25/36', '13/18', '7/9', '77/90', '100/180', '96/180', '90/180', '18/30', '20/30'

32

's2' или 's2x'

'3/4', '4/5', '5/6', '8/9', '9/10'

32

's2x'

'32/45', '11/15', '7/9', '2/3'

64

's2x'

'11/15', '7/9', '4/5', '5/6', '128/180'

128

's2x'

'3/4', '7/9'

256

's2x'

'32/45', '3/4', '116/180', '20/30', '124/180', '22/30'

Для получения дополнительной информации обратитесь к Таблицам 9 и 10 в стандарте DVB-S2 [1] и Таблице 17a в стандарте DVB-S2X [2].

Зависимости

Этот входной параметр применяется только, когда stdSuffix установлен в 's2' или 's2x'.

Типы данных: char | string

Структурируйте длину, заданную как 'normal' или 'short'. Функция usesframeLength и codeIDF, чтобы выбрать параметры модуляции.

Зависимости

Этот входной параметр применяется только, когда stdSuffix установлен в 's2' или 's2x'.

Типы данных: char | string

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: y = dvbsapskdemod(x,M,stdSuffix,'InputType','bit','OutputDataType','single');

Выведите тип, заданный как пара, разделенная запятой, состоящая из OutputType и 'integer', 'bit', 'llr' или 'approxllr'. Для описания возвращенного выходного параметра смотрите z.

Типы данных: char | string

Тип выходных данных, заданный как пара, разделенная запятой, состоящая из 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

Модульный средний флаг степени, заданный как пара, разделенная запятой, состоящая из UnitAveragePower и логического скаляра. Когда этим флагом является true, функция масштабирует совокупность к средней степени 1 ватта, на который ссылаются к 1 Ому. Когда этим флагом является false, функция масштабирует совокупность на основе спецификаций в соответствующем стандарте, как описано в [1] и [2].

Примечание

Когда stdSuffix установлен в 'sh', совокупность всегда имеет модульную среднюю силу.

Зависимости

Этот аргумент пары "имя-значение" применяется только, когда stdSuffix установлен в 's2' или 's2x'.

Типы данных: логический

Шумовое отклонение, заданное как пара, разделенная запятой, состоящая из NoiseVariance и положительной скалярной величины или вектора положительных значений.

  • Когда задано как скаляр, то же шумовое значение отклонения используется на всех входных элементах.

  • Когда задано как вектор, длина вектора должна быть равна количеству столбцов во входном сигнале.

Когда шумовое отклонение или результат степени сигнала в вычислениях включающие экстремальные положительные или отрицательные значения, смотрите DVB Совместимый APSK Мягкая Демодуляция для факторов выбора алгоритма.

Зависимости

Этот аргумент пары "имя-значение" применяется только, когда OutputType установлен в 'llr' или 'approxllr'.

Типы данных: double

Опция, чтобы построить совокупность, заданную как пара, разделенная запятой, состоящая из 'PlotConstellation' и логического скаляра. Чтобы построить совокупность, установите PlotConstellation на true.

Типы данных: логический

Выходные аргументы

свернуть все

Демодулируемый сигнал, возвращенный как скаляр, вектор или матрица. Размерности вывода отличаются в зависимости от заданного значения OutputType.

Значение OutputTypeВозвращаемое значение dvbsapskdemodРазмерности z
'integer'Демодулируемые целочисленные значения от 0 до (M – 1)z имеет те же размерности как вход y.
'bit'Демодулируемые битыКоличество строк в z является log2 (сумма (M)) времена количество строк в y. Каждый демодулируемый символ сопоставлен с группой log2 (сумма (M)) элементы в столбце, где первый элемент представляет MSB, и последний элемент представляет LSB.
'llr'Значение логарифмического отношения правдоподобия для каждого бита
'approxllr'Аппроксимированное значение логарифмического отношения правдоподобия для каждого бита

Больше о

свернуть все

DVB-S2/S2X/SH

Стандарты цифрового телевидения (DVB) задают S2, S2X и стандартно-специфичную модуляцию амплитудного манипулирования сдвига фазы (APSK) SH. Для получения дополнительной информации о стандартах DVB-S2/S2X/SH смотрите заданный в [1], [2], и [3], соответственно.

DVB совместимый APSK трудная демодуляция

Твердый алгоритм демодуляции применяет амплитудную фазу, декодирующую, как описано в [4].

DVB совместимый APSK мягкая демодуляция

Для мягкой демодуляции два алгоритма логарифмического отношения правдоподобия (LLR) мягкого решения доступны: точный LLR и аппроксимированный LLR. Эта таблица сравнивает эти алгоритмы.

АлгоритмТочностьСкорость выполнения
Точный LLRболее точныйболее медленное выполнение
Аппроксимированный LLRменее точныйболее быстрое выполнение

Для дальнейшего описания этих алгоритмов см. Точный Алгоритм LLR и Аппроксимируйте Алгоритм LLR.

Примечание

Точный алгоритм LLR вычисляет экспоненциалы с помощью конечной арифметики точности. Вычисление экспоненциалов с очень большими положительными или отрицательными значениями может уступить:

  • Inf или -Inf, если шумовое отклонение является очень большим значением

  • NaN, если оба шумовое отклонение и степень сигнала являются очень маленькими значениями

Когда вывод возвращает любое из этих значений, попытайтесь использовать аппроксимированный алгоритм LLR, потому что это не вычисляет экспоненциалы.

Ссылки

[1] EN 302 307 V1.4.1 Стандарта ETSI: Цифровое телевидение (DVB); структура структурирования Второго поколения, кодирование канала и системы модуляции для Широковещательной передачи, Interactive Services, Сбора Новостей и других широкополосных спутниковых приложений (DVB-S2), Европейский институт стандартизации электросвязи, Вальбонн, Франция, 2005-03.

[2] EN 302 307-2 V1.1.1 Стандарта ETSI: Цифровое телевидение (DVB); структура структурирования Второго поколения, кодирование канала и системы модуляции для Широковещательной передачи, Interactive Services, Сбора Новостей и других широкополосных спутниковых приложений (DVB-S2X), Европейский институт стандартизации электросвязи, Вальбонн, Франция, 2015-02.

[3] EN 302 583 V1.1.1 Стандарта ETSI: Цифровое телевидение (DVB); Структурируя структуру, кодирование канала и модуляцию для Услуг спутниковой связи к Карманным устройствам (SH), Европейскому институту стандартизации электросвязи, Вальбонн, Франция, 2008-03.

[4] Sebesta, J. “Эффективный метод для Демодуляции APSK”. Выбранные Темы на Прикладной математике, Схемах, Системах и Сигналах (П. Пардэлос, Н. Мэсторакис, В. Младенов, и З. Бойкович, редакторы). Воулиагмени, Афины, Греция: Нажатие WSEAS, 2009.

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

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

Введенный в R2018a