genqammod

Общая квадратурная амплитудная модуляция (QAM)

Синтаксис

Описание

пример

y = genqammod(x,const) возвращает комплексную огибающую QAM для сигнала сообщения x. Входные const задает отображение сигнала для модуляции.

Примеры

свернуть все

Передайте и примите данные с помощью непрямоугольного 16-арного созвездия в присутствии Гауссова шума. Покажите график поля точек шумного созвездия и оцените вероятность ошибки символа (SER) для двух различных отношений сигнал-шум.

Создайте 16-QAM созвездие на основе стандарта V.29 для телефонных модемов.

c = [-5 -5i 5 5i -3 -3-3i -3i 3-3i 3 3+3i 3i -3+3i -1 -1i 1 1i];
M = length(c);

Сгенерируйте случайные символы.

data = randi([0 M-1],2000,1);

Модулируйте данные с помощью genqammod функция. Общая модуляция QAM необходима, потому что пользовательское созвездие не прямоугольное.

modData = genqammod(data,c);

Пропустите сигнал через канал AWGN, имеющий отношение сигнал/шум (ОСШ) 20 дБ.

rxSig = awgn(modData,20,'measured');

Отобразите график поля точек принятого сигнала и ссылки созвездия, c.

h = scatterplot(rxSig);
hold on
scatterplot(c,[],[],'r*',h)
grid
hold off

Figure Scatter Plot contains an axes. The axes with title Scatter plot contains 2 objects of type line. This object represents Channel 1.

Демодулируйте принятый сигнал при помощи genqamdemod функция. Определите количество ошибок символа и коэффициент ошибки символа.

demodData = genqamdemod(rxSig,c);
[numErrors,ser] = symerr(data,demodData)
numErrors = 1
ser = 5.0000e-04

Повторите процесс передачи и демодуляции с каналом AWGN, имеющим ОСШ на 10 дБ. Определите вероятность ошибки символа для уменьшенного ОСШ. Как ожидалось, эффективность снижается, когда ОСШ уменьшается.

rxSig = awgn(modData,10,'measured');
demodData = genqamdemod(rxSig,c);
[numErrors,ser] = symerr(data,demodData)
numErrors = 462
ser = 0.2310

Создайте точки, которые описывают шестиугольное созвездие.

inphase = [1/2 1 1 1/2 1/2 2 2 5/2];
quadr = [0 1 -1 2 -2 1 -1 0];
inphase = [inphase;-inphase]; inphase = inphase(:);
quadr = [quadr;quadr]; quadr = quadr(:);
const = inphase + 1i*quadr;

Постройте график созвездия.

h = scatterplot(const);

Figure Scatter Plot contains an axes. The axes with title Scatter plot contains an object of type line. This object represents Channel 1.

Сгенерируйте символы входных данных. Модулируйте символы, используя это созвездие.

x = [3 8 5 10 7];
y = genqammod(x,const);

Демодулируйте модулированный сигнал, y.

z = genqamdemod(y,const);

Постройте график модулированного сигнала на том же рисунке.

hold on;
scatterplot(y,1,0,'ro',h);
legend('Constellation','Modulated signal');

Figure Scatter Plot contains an axes. The axes with title Scatter plot contains 2 objects of type line. These objects represent Constellation, Modulated signal.

Определите количество ошибок символов между демодулированными данными и исходной последовательностью.

numErrs = symerr(x,z)
numErrs = 0

Входные параметры

свернуть все

Сигнал сообщения, заданный как скаляр, вектор, матрица или трехмерный массив числовых значений. Сигнал сообщения должен состоять из целых чисел от 0 и length(const)–1. Если x является матрицей с несколькими строками, функция обрабатывает столбцы независимо.

Типы данных: double | single | fi | int8 | int16 | uint8 | uint16

Отображение сигнала, заданное как комплексный вектор.

Типы данных: double | single | fi | int8 | int16 | uint8 | uint16
Поддержка комплексного числа: Да

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

свернуть все

Комплексная огибающая, возвращенная в виде скаляра, вектора, матрицы или трехмерные массивы числовых значений. Длина y совпадает с длиной входа x.

Типы данных: double | single | fi | int8 | int16 | uint8 | uint16

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

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

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