exponenta event banner

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

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

свернуть все

Входной сигнал, заданный как скаляр, вектор, матрица или 3-D массив. Элементы 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), функция масштабирует созвездие так, чтобы точки созвездия КАМ были разделены минимальным расстоянием, равным двум.

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

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

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

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

свернуть все

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

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

Подробнее

свернуть все

Серый код

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

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

развернуть все

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

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

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

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