comm.GeneralQAMTCMDemodulator

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

Описание

The GeneralQAMTCMDemodulator объект использует алгоритм Viterbi, чтобы декодировать сигнал trellis-кодированной модуляции (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. Этот объект демодулирует сверточно закодированные данные, которые были сопоставлены с произвольным созвездием 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

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

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

TerminationMethod

Метод завершения кодированной системы координат

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

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

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

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

TracebackDepth

Глубина следа для декодера Viterbi

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

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

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

ResetInputPort

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

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

Constellation

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

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

OutputDataType

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

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

Методы

шагДемодулируйте сверточно закодированные данные, сопоставленные с произвольным созвездием 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-модулятора и демодулятора System 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