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 object. The axes object 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 object. The axes object 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 object. The axes object 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 object. The axes object 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 object. The axes object 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 object. The axes object 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)

Демодулируйте фиксированную точку, о которой 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 имя аргумента и 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 ложь) или 1 TRUE). Когда этим флагом является 1 TRUE), функция масштабирует созвездие к средней степени одного ватта, на который ссылаются к 1 Ому. Когда этим флагом является 0 ложь), функция масштабирует созвездие так, чтобы точки созвездия QAM были разделены минимальным расстоянием два.

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

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

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

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

свернуть все

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

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

Больше о

свернуть все

Код Грея

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

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

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

Ошибки, запускающиеся в R2018b

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

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

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