qammod

Квадратурная амплитудная модуляция (QAM)

Описание

пример

y = qammod(x,M) модулирует входной сигнал x при помощи QAM с заданным порядком модуляции M. Выходные y - модулированный сигнал.

пример

y = qammod(x,M,symOrder) задает порядок обозначения.

пример

y = qammod(___,Name,Value) задает опции, использующие аргументы пары "имя-значение" в дополнение к любой комбинации входных аргументов из предыдущих синтаксисов.

Примеры

свернуть все

Модулируйте данные с помощью QAM и отобразите результат на графике поля точек.

Установите порядок модуляции 16 и создайте вектор данных, содержащий каждый из возможных символов.

M = 16;
x = (0:M-1)';

Модулируйте данные с помощью qammod функция.

y = qammod(x,M);

Отобразите модулированное сигнальное созвездие с помощью scatterplot функция.

scatterplot(y)

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

Установите порядок модуляции 256 и отобразите график поля точек модулированного сигнала.

M = 256;
x = (0:M-1)';
y = qammod(x,M);
scatterplot(y)

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

Модулируйте символы случайных данных, используя QAM. Нормализуйте выход модулятора так, чтобы он имел среднюю степень сигнала 1 Вт.

Установите порядок модуляции и сгенерируйте случайные данные.

M = 64;
x = randi([0 M-1],1000,1);

Модулируйте данные. Используйте 'UnitAveragePower' Пара "имя-значение", чтобы задать среднюю степень сигнала выхода 1 Вт.

y = qammod(x,M,'UnitAveragePower',true);

Подтвердите, что сигнал имеет среднюю степень модуля.

avgPower = mean(abs(y).^2)
avgPower = 1.0070

Постройте график получившегося созвездия.

scatterplot(y)
title('64-QAM, Average Power = 1 W')

Figure Scatter Plot contains an axes. The axes with title 64-QAM, Average Power = 1 W contains an object of type line. This object represents Channel 1.

Постройте графики созвездий QAM для Серых, двоичных и пользовательских отображений символов.

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

M = 16;
d = [0:M-1];

Модулируйте данные и постройте их созвездие. Для отображения символов по умолчанию используется упорядоченное расположение «Серый». Упорядоченное расположение точек не является последовательной.

y = qammod(d,M,'PlotConstellation',true);

Figure contains an axes. The axes with title 16-QAM, Gray Mapping, UnitAveragePower=false contains 19 objects of type line, text.

Повторите процесс модуляции с двоичным отображением символов. Отображение символов выполняется в натуральном двоичном порядке и является последовательным.

z = qammod(d,M,'bin','PlotConstellation',true);

Figure contains an axes. The axes with title 16-QAM, Binary Mapping, UnitAveragePower=false contains 19 objects of type line, text.

Создайте пользовательское отображение символов.

smap = randperm(M)-1;

Модулируйте и постройте график созвездия.

w = qammod(d,M,smap,'PlotConstellation',true);

Figure contains an axes. The axes with title 16-QAM, Custom Mapping, UnitAveragePower=false contains 19 objects of type line, text.

Модулируйте последовательность бит с помощью 64-QAM. Пропустите сигнал через шумный канал. Отобразите результирующую сигнальное созвездие.

Установите порядок модуляции и определите количество бит на символ.

M = 64;
k = log2(M);

Создайте двоичную последовательность данных. При использовании двоичных входов количество строк в вход должно быть целым числом, кратным количеству бит на символ.

data = randi([0 1],1000*k,1);

Модулируйте сигнал с помощью битовых входов и установите его на среднюю степень модуля.

txSig = qammod(data,M,'InputType','bit','UnitAveragePower',true);

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

rxSig = awgn(txSig,25);

Постройте график созвездия.

cd = comm.ConstellationDiagram('ShowReferenceConstellation',false);
cd(rxSig)

Figure Constellation Diagram contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes contains an object of type line. This object represents Channel 1.

Демодулируйте сигнал QAM с фиксированной точкой и проверьте, что данные восстановлены правильно.

Установите порядок модуляции следующим 64, и определить количество бит на символ.

M = 64;
bitsPerSym = log2(M);

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

x = randi([0 1],10*bitsPerSym,1);

Модулируйте входные данные с помощью двоичного отображения символов. Установите модулятор, чтобы вывести данные с фиксированной точкой. Тип числовых данных подписан 16-битным размером слова и 10-битной длиной дроби.

y = qammod(x,M,'bin','InputType','bit','OutputDataType', ...
    numerictype(1,16,10));

Демодулируйте сигнал 64-QAM. Проверьте, что демодулированные данные соответствуют входным данным.

z = qamdemod(y,M,'bin','OutputType','bit');
s = isequal(x,double(z))
s = logical
   1

Входные параметры

свернуть все

Входной сигнал, заданный как скаляр, вектор, матрица или трехмерный массив. Элементами x должны быть двоичные значения или целые числа, которые варьируются от 0 до (M - 1), где M - порядок модуляции.

Примечание

Чтобы обработать входной сигнал как двоичные элементы, установите 'InputType'пара "имя-значение" в 'bit'. Для двоичных входов количество строк должно быть целым числом, кратным log2 (M). Группы log2 (M) биты отображаются на символ, причем первый бит представляет MSB и последний бит представляет LSB.

Типы данных: double | single | fi | int8 | int16 | uint8 | uint16

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

Пример: 16

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

Порядок символа, заданный как 'gray', 'bin', или вектор.

  • 'gray' - Использование упорядоченного расположения по серому коду

  • 'bin' - Используйте естественный двоичный код упорядоченного расположения

  • Вектор - Использование пользовательского упорядоченного расположения символов

Векторы должны использовать уникальные элементы, значения которых варьируются от 0 до M – 1. Первый элемент соответствует верхней левой точке созвездия, с последующими элементами, идущими вниз по столбцу слева направо.

Пример: [0 3 1 2]

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

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

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

Пример: y = qammod(x,M,symOrder,'InputType','bit')

Входной тип, заданный как разделенная разделенными запятой парами, состоящая из 'InputType' и любой из них 'integer' или 'bit'. Если вы задаете 'integer'входной сигнал должен состоять из целых чисел от 0 до M – 1. Если вы задаете 'bit'входной сигнал должен содержать двоичные значения, а количество строк должно быть целым числом, кратным log2 (M).

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

Среднее значение степени модуля, заданный как разделенная разделенными запятой парами, состоящая из 'UnitAveragePower' и числовое или логическое 0 (false) или 1 (true). Когда этот флаг 1 (true), функция масштабирует созвездие до средней степени в один ватт, привязанной к 1 Ом. Когда этот флаг 0 (false), функция масштабирует созвездие так, чтобы точки созвездия QAM были разделены минимальным расстоянием в два.

Выход данных, заданный как разделенная разделенными запятой парами, состоящая из 'OutputDataType' и a numerictype объект.

Для получения дополнительной информации о построении этих объектов см. numerictype (Fixed-Point Designer). Если вы не задаете 'OutputDataType', тип данных double если вход имеет тип данных double или встроенное целое число и single если вход имеет тип данных single.

Опция для построения созвездия, заданная как разделенная запятыми пара, состоящая из 'PlotConstellation' и числовое или логическое 0 (false) или 1 (true) Чтобы построить график созвездия QAM, задайте 'PlotConstellation' на true.

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

свернуть все

Модулированный сигнал, возвращенный как комплексный скаляр, вектор, матрица или трехмерный массив числовых значений. Для целочисленных входов выводите y имеет те же размерности, что и входной сигнал x. Для битовых входов количество строк в y количество строк в x разделенный на лог2 (M).

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

Подробнее о

свернуть все

Серый код

Gray code, также известная как отраженный двоичный код, является системой, в которой битовые шаблоны в смежных точках созвездия различаются только на один бит.

Вопросы совместимости

расширить все

Ошибки, начинающиеся в R2018b

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

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.
Представлено до R2006a