genqammod

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

Синтаксис

Описание

пример

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

Примеры

свернуть все

Передайте и получите данные с помощью непрямоугольного 16-ary созвездия в присутствии Гауссова шума. Покажите график рассеивания шумного созвездия и оцените коэффициент ошибок символа (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, имеющий отношение сигнал-шум (SNR) на 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 object. The axes object 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 object. The axes object 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 object. The axes object 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++ с помощью MATLAB® Coder™.

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