MIL-STD-188-110 B/C-специфическую квадратурную амплитудную демодуляцию
выполняет демодуляцию QAM по входному сигналу, 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'
задает требуемый тип выходных данных как 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
и положительная скалярная величина или вектор положительных значений.
При задании в виде скаляра то же значение отклонения шума используется для всех входных элементов.
При указании в качестве вектора длина вектора должна быть равна количеству столбцов в входном сигнале.
Когда отклонение шума или степень сигнала приводят к расчетам с крайними положительными или отрицательными величинами, смотрите MIL-STD-188-110 QAM Soft Demodulation для факторов выбора алгоритма.
Этот аргумент пары "имя-значение" применяется только при 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 is 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.