MIL-STD-188-110 Стандартная квадратурная амплитудная демодуляция B/C
выполняет демодуляцию КАМ на входном сигнале, z = mil188qamdemod(y,M)y, которая была модулирована в соответствии с MIL-STD-188-110 и порядком модуляции, M. Описание MIL-STD-188-110 демодуляции QAM см. в разделах MIL-STD-188-110 Жесткая демодуляция QAM и MIL-STD-188-110 Мягкая демодуляция QAM.
указывает параметры, использующие один или несколько аргументов пары имя-значение. Например, z = mil188qamdemod(y,M,Name,Value)'OutputDataType','double' задает требуемый тип выходных данных как двойной. Укажите аргументы пары имя-значение после всех других входных аргументов.
Демодуляция 16-QAM сигнала, который был модулирован, как указано в MIL-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 сигнала, который был модулирован, как указано в MIL-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 должны быть модулированы в соответствии с MIL-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' - Тип вывода'integer' (по умолчанию) | 'bit' | 'llr' | 'approxllr'Тип вывода, указанный как разделенная запятыми пара, состоящая из OutputType и 'integer', 'bit', 'llr', или 'approxllr'.
Типы данных: 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
'UnitAveragePower' - Флаг средней мощности блокаfalse (по умолчанию) | trueФлаг средней мощности блока, определяемый как разделенная запятыми пара, состоящая из UnitAveragePower и логический скаляр. Когда этот флаг trueфункция масштабирует созвездие до средней мощности 1 Вт, относящейся к 1 Ом. Когда этот флаг false, функция масштабирует совокупность на основе спецификаций в соответствующем стандарте, как описано в [1].
Типы данных: logical
'NoiseVariance' - Дисперсия шума1 (по умолчанию) | положительный скаляр | вектор положительных значенийДисперсия шума, указанная как разделенная запятыми пара, состоящая из NoiseVariance и положительный скаляр или вектор положительных значений.
Если задано как скаляр, то одно и то же значение дисперсии шума используется для всех входных элементов.
Если указан как вектор, длина вектора должна быть равна количеству столбцов во входном сигнале.
Когда шумовое различие или результат власти сигнала в вычислениях, включающих экстремальные положительные или отрицательные величины, посмотрите Мил STD-188 110 QAM Мягкая Демодуляция для соображений выбора алгоритма.
Этот аргумент пары имя-значение применяется только в том случае, если OutputType имеет значение 'llr' или 'approxllr'.
Типы данных: double
'PlotConstellation' - Опция для печати совокупностиfalse (по умолчанию) | trueОпция для печати совокупности, заданной как разделенная запятыми пара, состоящая из 'PlotConstellation' и логический скаляр. Для построения графика созвездия установите PlotConstellation кому true.
Типы данных: logical
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] MIL-STD-188-110B & C: «Стандарты совместимости и производительности модемов данных». Стандарт интерфейса министерства обороны, США.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.