Миллиметр STD-188 110 B/C стандартно-специфичная квадратурная амплитудная демодуляция
z = mil188qamdemod(y,M)
z = mil188qamdemod(y,M,Name,Value)
выполняет демодуляцию 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
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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' , '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].
Типы данных: логический
'NoiseVariance'
— Шумовое отклонение1
(значение по умолчанию) | положительная скалярная величина | вектор положительных значенийШумовое отклонение, заданное как пара, разделенная запятой, состоящая из 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.