exponenta event banner

mil188qamdemod

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')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent 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);

Figure contains an axes. The axes with title MIL188 64-QAM , UnitAveragePower=false contains 67 objects of type line, text.

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

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);

Figure contains an axes. The axes with title MIL188 32-QAM , UnitAveragePower=true contains 35 objects of type line, text.

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

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

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

scatterplot(rxSig) 

Figure Scatter Plot contains an axes. The axes with title Scatter plot contains an object of type line. This object represents Channel 1.

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

z = mil188qamdemod(rxSig,M,'OutputType','approxllr', ...
     'NoiseVariance',10^(-1));

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

свернуть все

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

y должны быть модулированы в соответствии с MIL-STD-188-110 [1].

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

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

Пример: 16

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

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

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: y = mil188qamdemod(x,M,'OutputType','bit','OutputDataType','single');

Тип вывода, указанный как разделенная запятыми пара, состоящая из OutputType и 'integer', 'bit', 'llr', или 'approxllr'.

Типы данных: 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].

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

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

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

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

Когда шумовое различие или результат власти сигнала в вычислениях, включающих экстремальные положительные или отрицательные величины, посмотрите Мил STD-188 110 QAM Мягкая Демодуляция для соображений выбора алгоритма.

Зависимости

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

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

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

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

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

свернуть все

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

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

Подробнее

свернуть все

MIL-STD-188-110 Жесткая демодуляция QAM

Алгоритм жесткой демодуляции использует демодуляцию на основе области оптимального решения. Поскольку все точки созвездия одинаково вероятны, максимальное обнаружение апостериорной вероятности (MAP) уменьшает до обнаружения максимальной вероятности (ML). Правило обнаружения ML эквивалентно выбору ближайшей точки созвездия к принятому символу. Область решения для каждой точки созвездия проектируется путем построения перпендикулярных биссектрис между соседними точками. Принятый символ отображается в соответствующую точку объединения на основании того, в какой области решения он находится.

Поскольку все совокупности MIL-STD являются симметричными на основе квадрантов, для каждого символа демодуляция на основе области оптимального решения:

  • Отображение полученного символа в первый квадрант

  • Выбор области решения для символа

  • Отображает точку созвездия обратно в исходный квадрант, используя знак действительной и мнимой частей принятого символа

MIL-STD-188-110 Программная демодуляция QAM

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

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

Дальнейшее описание этих алгоритмов см. в разделах Точный алгоритм LLR и Приблизительный алгоритм LLR.

Примечание

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

  • Inf или -Inf если дисперсия шума очень велика

  • NaN если дисперсия шума и мощность сигнала очень малы

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

Ссылки

[1] MIL-STD-188-110B & C: «Стандарты совместимости и производительности модемов данных». Стандарт интерфейса министерства обороны, США.

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.
Представлен в R2018a