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 ложь) или 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