Квадратурная амплитудная модуляция (QAM)
задает параметры, использующие аргументы пары имя-значение в дополнение к любой из комбинаций входных аргументов из предыдущих синтаксисов.y = qammod(___,Name,Value)
Модулировать данные с помощью QAM и отображать результат на графике рассеяния.
Установите порядок модуляции 16 и создайте вектор данных, содержащий каждый из возможных символов.
M = 16; x = (0:M-1)';
Модулировать данные с помощью qammod функция.
y = qammod(x,M);
Отображение модулированной комбинации сигналов с помощью scatterplot функция.
scatterplot(y)

Установите порядок модуляции 256 и отобразите график рассеяния модулированного сигнала.
M = 256; x = (0:M-1)'; y = qammod(x,M); scatterplot(y)

Модулировать случайные символы данных с помощью 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')
Печать совокупностей QAM для отображения серого, двоичного и пользовательского символов.
Установите порядок модуляции и создайте последовательность данных, которая включает в себя полный набор символов для схемы модуляции.
M = 16; d = [0:M-1];
Модулируйте данные и постройте график их совокупности. Сопоставление символов по умолчанию использует порядок серого. Порядок точек не является последовательным.
y = qammod(d,M,'PlotConstellation',true);
Повторите процесс модуляции с отображением двоичных символов. Отображение символа следует естественному двоичному порядку и является последовательным.
z = qammod(d,M,'bin','PlotConstellation',true);

Создайте пользовательское сопоставление символов.
smap = randperm(M)-1;
Модулировать и выводить на график созвездие.
w = qammod(d,M,smap,'PlotConstellation',true);
Модулировать последовательность битов с помощью 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)
Демодуляция сигнала 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 - Входной сигналВходной сигнал, заданный как скаляр, вектор, матрица или 3-D массив. Элементы x должны быть двоичными значениями или целыми числами в диапазоне от 0 до (M - 1), где M - порядок модуляции.
Примечание
Чтобы обработать входной сигнал как двоичные элементы, установите 'InputTypeпара «имя-значение» 'bit'. Для двоичных входов число строк должно быть целым кратным log2 (M). Группы log2 (M) биты отображаются на символ, причем первый бит представляет MSB, а последний бит представляет LSB.
Типы данных: double | single | fi | int8 | int16 | uint8 | uint16
M - Порядок модуляцииПорядок модуляции, заданный как скалярное целое число степени два. Порядок модуляции определяет количество точек в совокупности сигналов.
Пример: 16
Типы данных: double
symOrder - Порядок символов'gray' (по умолчанию) | 'bin' | векторПорядок символов, указанный как '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'Тип ввода, указанный как разделенная запятыми пара, состоящая из 'InputType' и либо 'integer' или 'bit'. При указании 'integer', входной сигнал должен состоять из целых чисел от 0 до M – 1. При указании 'bit', входной сигнал должен содержать двоичные значения, а число строк должно быть целым кратным log2 (M).
Типы данных: char
'UnitAveragePower' - Флаг средней мощности блокаfalse или 0 (по умолчанию) | true или 1Флаг средней мощности блока, определяемый как разделенная запятыми пара, состоящая из 'UnitAveragePower' и числовой или логический 0 (false) или 1 (true). Когда этот флаг 1 (true), функция масштабирует созвездие до средней мощности одного ватта, относящейся к 1 Ом. Когда этот флаг 0 (false), функция масштабирует созвездие так, чтобы точки созвездия КАМ были разделены минимальным расстоянием, равным двум.
'OutputDataType' - Тип выходных данныхnumerictype объектТип выходных данных, указанный как разделенная запятыми пара, состоящая из 'OutputDataType' и numerictype объект.
Дополнительные сведения о построении этих объектов см. в разделе numerictype (Конструктор фиксированных точек). Если не указать 'OutputDataType', тип данных: double если вход имеет тип данных double или встроенные целочисленные и single если вход имеет тип данных single.
'PlotConstellation' - Опция для печати совокупностиfalse или 0 (по умолчанию) | true или 1Опция для печати совокупности, заданной как разделенная запятыми пара, состоящая из 'PlotConstellation' и числовой или логический 0 (false) или 1 (true) Для построения графика совокупности QAM установите 'PlotConstellation' кому true.
y - Модулированный сигналМодулированный сигнал, возвращаемый как комплексный скаляр, вектор, матрица или 3-D массив числовых значений. Для целочисленных входов, выход y имеет те же размеры, что и входной сигнал x. Для битовых входов - количество строк в y - количество строк в x делится на log2 (M).
Типы данных: double | single
Код Грея, также известный как отраженный двоичный код, представляет собой систему, в которой битовые комбинации в соседних точках созвездия различаются только на один бит.
Ошибки, начинающиеся с R2018b
Начиная с R2018b, нельзя больше смещать начальную фазу для совокупности QAM с помощью qammod функция.
Вместо этого используйте genqammod для смещения начальной фазы модулированных данных, или можно умножить qammod вывод по требуемой начальной фазе:
y = qammod(x,M) .* exp(1i*initPhase)
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.