Квадратурная амплитудная демодуляция MIL STD 188 110 B/C
выполняет демодуляцию QAM на входном сигнале, z
= mil188qamdemod(y
,M
)y
, это модулировалось в соответствии с миллиметром STD-188 110 и порядком модуляции, M
. Для описания демодуляции STD-188 110 QAM миллиметра смотрите миллиметр STD-188 110 QAM Трудная Демодуляция и миллиметр STD-188 110 QAM Мягкая Демодуляция.
задает опции с помощью одного или нескольких аргументов пары "имя-значение". Например, z
= mil188qamdemod(y
,M
,Name,Value
)'OutputDataType','double'
задает желаемый тип выходных данных как дважды. Задайте аргументы пары "имя-значение" после всех других входных параметров.
Демодулируйте 16-QAM сигнал, который модулировался, как задано в миллиметре STD-188 110B. Постройте полученное созвездие и проверьте, что выход совпадает с входом.
Установите порядок модуляции и сгенерируйте случайные данные.
M = 16; numSym = 20000; x = randi([0 M-1],numSym,1);
Модулируйте данные и пройдите через шумный канал.
txSig = mil188qammod(x,M);
rxSig = awgn(txSig,25,'measured');
Постройте переданный и полученный сигнал.
plot(rxSig,'b*') hold on; grid plot(txSig,'r*') xlim([-1.5 1.5]); ylim([-1.5 1.5]) xlabel('In-Phase') ylabel('Quadrature') legend('Received constellation','Reference constellation')
Демодулируйте полученный сигнал. Сравните демодулируемые данные с исходными данными.
z = mil188qamdemod(rxSig,M); isequal(x,z)
ans = logical
1
Демодулируйте 64-QAM сигнал, который модулировался, как задано в миллиметре STD-188 110C. Вычислите бит трудного решения выход и которые проверяют, что выход совпадает с входом.
Установите порядок модуляции и сгенерируйте случайные битные данные.
M = 64; numBitsPerSym = log2(M); x = randi([0 1],1000*numBitsPerSym,1);
Модулируйте данные. Используйте пары "имя-значение", чтобы задать битные входные данные и построить созвездие.
txSig = mil188qammod(x,M,'InputType','bit','PlotConstellation',true);
Демодулируйте полученный сигнал. Сравните демодулируемые данные с исходными данными.
z = mil188qamdemod(txSig,M,'OutputType','bit'); isequal(z,x)
ans = logical
1
Демодулируйте 32-QAM сигнал и вычислите мягкие биты.
Установите порядок модуляции и сгенерируйте случайную последовательность битов.
M = 32; numSym = 20000; numBitsPerSym = log2(M); x = randi([0 1], numSym*numBitsPerSym,1);
Модулируйте данные. Используйте пары "имя-значение", чтобы задать битные входные данные и модульную среднюю степень, и построить созвездие.
txSig = mil188qammod(x,M,'InputType','bit','UnitAveragePower',true, ... 'PlotConstellation',true);
Передайте передаваемые данные через белый Гауссов шум.
rxSig = awgn(txSig,10,'measured');
Просмотрите созвездие с помощью графика рассеивания.
scatterplot(rxSig)
Демодулируйте сигнал, вычисляя мягкие биты с помощью аппроксимированного алгоритма LLR.
z = mil188qamdemod(rxSig,M,'OutputType','approxllr', ... 'NoiseVariance',10^(-1));
y
— Модулируемый сигналМодулируемый сигнал, заданный как комплексный скаляр, вектор или матрица. Когда y
матрица, каждый столбец обработан как независимый канал.
y
должен модулироваться в соответствии с миллиметром STD-188 110 [1].
Типы данных: single
| double
Поддержка комплексного числа: Да
M
— Порядок модуляцииПорядок модуляции, заданный как степень двойки. Порядок модуляции задает общее количество точек в сигнальном созвездии.
Пример: 16
Типы данных: double
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
y = mil188qamdemod(x,M,'OutputType','bit','OutputDataType','single');
'OutputType'
'OutputType' 'integer'
(значение по умолчанию) | 'bit'
| 'llr'
| 'approxllr'
Выведите тип, заданный как разделенная запятой пара, состоящая из OutputType
и 'integer'
, 'bit'
, 'llr'
, или 'approxllr'
.
Типы данных: char |
string
'OutputDataType'
— Тип выходных данных'double'
(значение по умолчанию) | ...
Тип выходных данных, заданный как разделенная запятой пара, состоящая из OutputDataType
и один из обозначенных типов данных. Приемлемые значения для OutputDataType
зависьте от OutputType
значение.
OutputType Значение | Приемлемый OutputDataType Значения |
---|---|
'integer' | 'double' единственный int8 int16 int32 uint8 uint16 , или 'uint32' |
'bit' | 'double' единственный int8 int16 int32 uint8 uint16 uint32 , или 'logical' |
Этот аргумент пары "имя-значение" применяется только когда OutputType
установлен в 'integer'
или 'bit'
.
Типы данных: char |
string
'UnitAveragePower'
— Модульный средний флаг степениfalse
(значение по умолчанию) | true
Модульный средний флаг степени, заданный как разделенная запятой пара, состоящая из UnitAveragePower
и логический скаляр. Когда этим флагом является true
, функция масштабирует созвездие к средней степени 1 ватта, на который ссылаются к 1 Ому. Когда этим флагом является false
, функция масштабирует созвездие на основе спецификаций в соответствующем стандарте, как описано в [1].
Типы данных: логический
'NoiseVariance'
— Шумовое отклонение
(значение по умолчанию) | положительная скалярная величина | вектор положительных значенийШумовое отклонение, заданное как разделенная запятой пара, состоящая из NoiseVariance
и положительная скалярная величина или вектор положительных значений.
Когда задано как скаляр, то же шумовое значение отклонения используется на всех входных элементах.
Когда задано как вектор, длина вектора должна быть равна количеству столбцов во входном сигнале.
Когда шумовое отклонение или результат степени сигнала в расчетах включающие экстремальные положительные или отрицательные величины, смотрите миллиметр STD-188 110 QAM Мягкая Демодуляция для факторов выбора алгоритма.
Этот аргумент пары "имя-значение" применяется только когда OutputType
установлен в 'llr'
или 'approxllr'
.
Типы данных: double
'PlotConstellation'
— Опция, чтобы построить созвездиеfalse
(значение по умолчанию) | true
Опция, чтобы построить созвездие, заданное как разделенная запятой пара, состоящая из 'PlotConstellation'
и логический скаляр. Чтобы построить созвездие, установите PlotConstellation
к true
.
Типы данных: логический
z
— Демодулируемый сигналДемодулируемый сигнал, возвращенный как скаляр, вектор или матрица. Размерности z
зависьте от заданного OutputType
значение.
OutputType Значение | Возвращаемое значение mil188qamdemod | Размерности z |
---|---|---|
'integer' | Демодулируемые целочисленные значения от 0 до (M – 1) | z имеет те же размерности как вход y . |
'bit' | Демодулируемые биты | Количество строк в z log2 (сумма (M )) времена количество строк в y . Каждый демодулируемый символ сопоставлен с группой log2 (сумма (M )) элементы в столбце, где первый элемент представляет MSB и последний элемент, представляют LSB. |
'llr' | Значение отношения логарифмической правдоподобности для каждого бита | |
'approxllr' | Аппроксимированное значение отношения логарифмической правдоподобности для каждого бита |
Твердый алгоритм демодуляции использует оптимальное решение находящаяся в области демодуляция. Поскольку все точки созвездия одинаково вероятны, максимальны по опыту вероятность (MAP), обнаружение уменьшает до обнаружения наибольшего правдоподобия (ML). Правило обнаружения ML эквивалентно выбору самой близкой точки созвездия к полученному символу. Область решения для каждой точки созвездия спроектирована путем рисования перпендикулярных биссектрис между смежными точками. Полученный символ сопоставлен с соответствующей точкой созвездия, на основе которой области решения он находится в.
Поскольку все созвездия MIL-STD основаны на квадранте симметричный для каждого символа оптимальное решение находящаяся в области демодуляция:
Сопоставляет полученный символ в первый квадрант
Выбирает область решения для символа
Сопоставляет точку созвездия назад с ее исходным квадрантом с помощью знака действительных и мнимых частей полученного символа
Для мягкой демодуляции два алгоритма отношения логарифмической правдоподобности (LLR) мягкого решения доступны: точный LLR и аппроксимированный LLR. Эта таблица сравнивает эти алгоритмы.
Алгоритм | Точность | Скорость выполнения |
---|---|---|
Точный LLR | более точный | более медленное выполнение |
Аппроксимированный LLR | менее точный | более быстрое выполнение |
Для дальнейшего описания этих алгоритмов см. Точный Алгоритм LLR и Аппроксимируйте Алгоритм LLR.
Точный алгоритм LLR вычисляет экспоненциалы с помощью конечной арифметики точности. Расчет экспоненциалов с очень большими положительными или отрицательными величинами может уступить:
Inf
или -Inf
если шумовое отклонение является очень большим значением
NaN
если оба шумовое отклонение и степень сигнала являются очень маленькими значениями
Когда выход возвращает любое из этих значений, попытайтесь использовать аппроксимированный алгоритм LLR, потому что это не вычисляет экспоненциалы.
[1] Миллиметр STD-188 110B & C: "Функциональная совместимость и стандарты производительности для модемов данных". Стандарт интерфейса министерства обороны, США.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.