Квадратурная амплитудная модуляция (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);
step(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
— Входной сигналВходной сигнал в виде скаляра, вектора, матрицы или трехмерного массива. Элементами 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'
inputType 'integer'
(значение по умолчанию) | 'bit'
Введите тип в виде разделенной запятой пары, состоящей из 'InputType'
и любой 'integer'
или 'bit'
. Если вы задаете 'integer'
, входной сигнал должен состоять из целых чисел от 0 до M
– 1. Если вы задаете 'bit'
, входной сигнал должен содержать двоичные значения, и количество строк должно быть целочисленным кратным log2 (M
).
Типы данных: char
'UnitAveragePower'
— Модульный средний флаг степениfalse
или 0
(значение по умолчанию) | true
или 1
Модульная средняя степень отмечает в виде разделенной запятой пары, состоящей из 'UnitAveragePower'
и числовой или логический 0
ложь
) или 1
TRUE
). Когда этим флагом является 1
TRUE
), функция масштабирует созвездие к средней степени одного ватта, на который ссылаются к 1 Ому. Когда этим флагом является 0
ложь
), функция масштабирует созвездие так, чтобы точки созвездия QAM были разделены минимальным расстоянием два.
'OutputDataType'
— Тип выходных данныхnumerictype
объектВыходные данные вводят в виде разделенной запятой пары, состоящей из 'OutputDataType'
и numerictype
объект.
Для получения дополнительной информации о построении этих объектов смотрите numerictype
(Fixed-Point Designer). Если вы не задаете 'OutputDataType'
, типом данных является double
если вход имеет тип данных double
или встроенное целое число и single
если вход имеет тип данных single
.
'PlotConstellation'
— Опция, чтобы построить созвездиеfalse
или 0
(значение по умолчанию) | true
или 1
Опция, чтобы построить созвездие в виде разделенной запятой пары, состоящей из 'PlotConstellation'
и числовой или логический 0
ложь
) или 1
TRUE
) Чтобы построить созвездие QAM, установите 'PlotConstellation'
к true
.
y
— Модулируемый сигналМодулируемый сигнал, возвращенный как комплексный скаляр, вектор, матрица или трехмерный массив числовых значений. Для целочисленных входных параметров, выхода y
имеет те же размерности как входной сигнал x
. Для битных входных параметров, количества строк в y
количество строк в x
разделенный на log2 (M
).
Типы данных: double |
single
Gray code, также известный как отраженный двоичный код, является системой, где комбинации двоичных разрядов в смежных точках созвездия отличаются только на один бит.
Ошибки, запускающиеся в R2018b
Начиная в R2018b, вы больше не можете возмещать начальную фазу для созвездия QAM с помощью qammod
функция.
Вместо этого используйте genqammod
чтобы возместить начальную фазу данных, модулируемых, или можно умножиться qammod
выведите желаемой начальной фазой:
y = qammod(x,M) .* exp(1i*initPhase)
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.