exponenta event banner

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

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

Описание

GeneralQAMTCMDemodulator объект использует алгоритм Витерби для декодирования сигнала решетчатой модуляции (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. Этот объект демодулирует сверточно закодированные данные, которые были отображены в произвольную совокупность КАМ.

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объект сохраняет метрику внутреннего состояния в конце каждого кадра. В следующем кадре используется та же метрика состояния. Каждый путь отслеживания обрабатывается объектом независимо. Если входной сигнал содержит только один символ, используйте Continuous режим.

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

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

TracebackDepth

Глубина отслеживания для декодера Витерби

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

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

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

ResetInputPort

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

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

Constellation

Сигнальная совокупность

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

OutputDataType

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

Укажите тип выходных данных как один из logical | double. Значение по умолчанию: double.

Методы

шагДемодулировать сверточно закодированные данные, отображенные в произвольную совокупность QAM
Общие для всех системных объектов
release

Разрешить изменение значения свойства объекта системы

reset

Сброс внутренних состояний объекта System

Примеры

свернуть все

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

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

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

Создание пары object™ системы модулятора и демодулятора QAM TCM с использованием 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

Алгоритмы

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

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

.
Представлен в R2012a