comm.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 для уровня K/N сверточный код. Значение по умолчанию соответствует разделенному набором порядку для точек сигнального созвездия 8-PSK. Это значение описывается как exp (2×π×j×[04261537]8).

OutputDataType

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

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

Методы

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

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

reset

Сбросьте внутренние состояния Системного объекта

Примеры

свернуть все

Модулируйте и демодулируйте использование зашумленных данных модуляция 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