коммуникация. GeneralQAMTCMDemodulator

Демодулируйте convolutionally закодированные данные, сопоставленные с произвольной совокупностью QAM

Описание

Объект GeneralQAMTCMDemodulator использует алгоритм Viterbi, чтобы декодировать сигнал закодированной решеткой модуляции (TCM), который ранее модулировался с помощью произвольного сигнального созвездия.

Чтобы демодулировать сигнал, который модулировался с помощью закодированного решеткой, общего квадратурного амплитудного модулятора:

  1. Задайте и настройте свой общий объект модулятора QAM TCM. Смотрите Конструкцию.

  2. Вызовите step, чтобы демодулировать сигнал согласно свойствам comm.GeneralQAMTCMDemodulator. Поведение step характерно для каждого объекта в тулбоксе.

Примечание

При запуске в R2016b, вместо того, чтобы использовать метод step, чтобы выполнить операцию, заданную Системой object™, можно вызвать объект с аргументами, как будто это была функция. Например, y = step(obj,x) и y = obj(x) выполняют эквивалентные операции.

Конструкция

H = comm.GeneralQAMTCMDemodulator создает закодированную решеткой, общую квадратурную амплитуду (QAM TCM) Системный объект демодулятора, H. Этот объект демодулирует convolutionally закодированные данные, которые были сопоставлены с произвольной совокупностью QAM.

H = comm.GeneralQAMTCMDemodulator(Name,Value) создает общий объект демодулятора QAM TCM, H, с каждым заданным набором свойств к заданному значению. Можно задать дополнительные аргументы пары "имя-значение" в любом порядке как (Name1, Value1..., NameN, ValueN).

H = comm.GeneralQAMTCMDemodulator(TRELLIS,Name,Value) создает общий объект демодулятора QAM TCM, H. Этот объект имеет набор свойств TrellisStructure к TRELLIS и другой заданный набор свойств к заданным значениям.

Свойства

TrellisStructure

Структура решетки сверточного кода

Задайте решетку как структуру MATLAB, которая содержит описание решетки сверточного кода. Используйте функцию istrellis, чтобы проверять, является ли структура допустимой структурой решетки. Значением по умолчанию является значение, которое следует из poly2trellis ([1 3], [1 0 0; 0 5 2]).

TerminationMethod

Метод завершения закодированного кадра

Задайте метод завершения как один из Continuous | Truncated | Terminated. Значением по умолчанию является Continuous.

Когда вы устанавливаете это свойство на Continuous, объект сохраняет метрику внутреннего состояния в конце каждого кадра. Следующий кадр использует ту же метрику состояния. Объект обрабатывает каждый traceback путь независимо. Если входной сигнал содержит только один символ, используйте режим Continuous.

Когда вы устанавливаете это свойство на Truncated, объект обрабатывает каждый входной вектор независимо. traceback путь запускается в состоянии с лучшей метрики и всегда заканчивается во все-нулевом состоянии.

Когда вы устанавливаете это свойство на Terminated, объект обрабатывает каждый входной вектор независимо, и traceback путь всегда запускается и заканчивается во все-нулевом состоянии.

TracebackDepth

Глубина Traceback для Декодера Витерби

Задайте скаляр, целое число ответвлений решетки, чтобы создать каждый traceback путь. Значением по умолчанию является 21. Параметр глубины Traceback влияет на точность декодирования и задержку. Задержка декодирования указывает на количество нулевых символов, которые предшествуют первому декодируемому символу в выводе.

Когда вы устанавливаете свойство TerminationMethod на Continuous, задержка декодирования состоит из нулевых символов TracebackDepth или TracebackDepth×Нулевые биты K для уровня K/N сверточный код.

Когда вы устанавливаете свойство TerminationMethod на Truncated или Terminated, никакая выходная задержка не происходит, и traceback глубина должна быть меньше чем или равна количеству символов в каждом входном векторе.

ResetInputPort

Включите вход сброса демодулятора

Установите это свойство на true включать дополнительный вход к методу step. Значением по умолчанию является false. Когда этот дополнительный вход сброса является ненулевым значением, внутренними состояниями сброса энкодера к их начальным условиям. Это свойство применяется, когда вы устанавливаете свойство TerminationMethod на Continuous.

Constellation

Сигнальное созвездие

Задайте двойное - или комплексный вектор с одинарной точностью. Этот вектор перечисляет точки в сигнальном созвездии, которые использовались, чтобы сопоставить convolutionally закодированные данные. Совокупность должна быть задана в разделенном набором порядке. См. документацию для блока General TCM Encoder для получения дополнительной информации о разделенном набором порядке. Длина вектора совокупности должна равняться количеству возможных вводимых символов к сверточному декодеру общего объекта демодулятора QAM TCM. Это соответствует 2N for уровень K/N сверточный код. Значение по умолчанию соответствует разделенному набором порядку для точек сигнального созвездия 8-PSK. Это значение выражается как exp (2×π×j×[04261537]8).

OutputDataType

Тип данных вывода

Задайте тип выходных данных как один из logical | double. Значением по умолчанию является double.

Методы

сбросСбросьте состояния общего объекта демодулятора QAM TCM
шагДемодулируйте convolutionally закодированные данные, сопоставленные с произвольной совокупностью QAM
Характерный для всех системных объектов
release

Позвольте изменения значения свойства Системного объекта

Примеры

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

Модулируйте и демодулируйте шумное использование данных модуляция QAM TCM с произвольной совокупностью с 4 точками. Оцените результирующий BER.

Задайте структуру решетки с двумя вводимыми символами и четырьмя выходными символами с помощью [171 133] полином генератора. Задайте произвольную совокупность с четырьмя точками.

qamTrellis = poly2trellis(7,[171 133]);
refConst = exp(pi*1i*[1 2 3 6]/4);

Создайте модулятор QAM TCM и Систему демодулятора object™ пара с помощью qamTrellis и refConst.

hMod = comm.GeneralQAMTCMModulator(qamTrellis,'Constellation', refConst);
hDemod = comm.GeneralQAMTCMDemodulator(qamTrellis,'Constellation',refConst);

Создайте объект канала AWGN, в котором шум установлен при помощи отношения сигнал-шум.

hAWGN = comm.AWGNChannel('NoiseMethod','Signal to noise ratio (SNR)', ...
    'SNR',4);

Создайте калькулятор коэффициента ошибок с задержкой (в битах) равный продукту TracebackDepth и количеству битов на символ

hError = comm.ErrorRate(...
    'ReceiveDelay', hDemod.TracebackDepth*log2(qamTrellis.numInputSymbols));

Сгенерируйте случайные двоичные данные и примените модуляцию QAM TCM. Передайте сигнал через AWGN, образовывают канал и демодулируют. Соберите ошибочные статистические данные.

for counter = 1:10
    % Generate binary data
    data = randi([0 1],500,1);
    % Modulate
    modSignal = step(hMod,data);
    % Pass through an AWGN channel
    noisySignal = step(hAWGN,modSignal);
    % Demodulate
    receivedData = step(hDemod,noisySignal);
    % Calculate the error statistics
    errorStats = step(hError,data,receivedData);
end

Отобразите BER и количество битовых ошибок.

fprintf('Error rate = %5.2e\nNumber of errors = %d\n', ...
    errorStats(1), errorStats(2))
Error rate = 1.16e-02
Number of errors = 58

Алгоритмы

Этот объект реализует алгоритм, входные параметры и выходные параметры, описанные на странице с описанием блока General TCM Decoder. Свойства объектов соответствуют параметрам блоков.

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

Представленный в R2012a