exponenta event banner

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

Демодуляция с использованием метода GMSK и алгоритма Витерби

Описание

GMSKDemodulator объект использует алгоритм Витерби для демодуляции сигнала, который был модулирован с использованием гауссова метода минимальной манипуляции сдвигом. Вход является представлением модулированного сигнала в основной полосе частот.

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

  1. Определите и настройте объект демодулятора GMSK. См. раздел Строительство.

  2. Звонить step демодулировать сигнал в соответствии со свойствами GMSKDemodulator. Поведение step относится к каждому объекту на панели инструментов.

Примечание

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

Строительство

H = comm.GMSKDemodulator создает объект системы демодулятора, H. Этот объект демодулирует входные Gaussian минимальные манипуляции сдвига (GMSK) модулированные данные с использованием алгоритма Витерби.

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

Свойства

BitOutput

Выходные данные в виде битов

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

При установке BitOutput свойство для false, step метод выводит вектор столбца длиной, равной N/SamplesPerSymbol. N - длина входного сигнала, которая является количеством входных модулируемых символов основной полосы частот. Элементы выходного вектора: –1 или 1.

При установке BitOutput свойство для true, step метод выводит двоичный вектор столбца длиной, равной N/SamplesPerSymbol с битовыми значениями 0 или 1.

BandwidthTimeProduct

Произведение полосы пропускания и символьного времени гауссова импульса

Задайте произведение полосы пропускания и времени символа для формы гауссова импульса как действительный положительный скаляр. Дефолт 0.3.

PulseLength

Длина импульса

Укажите длину гауссова импульса в символьных интервалах как действительное положительное целое число. Дефолт 4.

SymbolPrehistory

Предыстория символов

Укажите символы данных, используемые модулятором до первого вызова step способ. Значение по умолчанию: 1. Для этого свойства требуется скаляр или вектор с элементами, равными -1 или 1. Если значение является вектором, его длина должна быть на единицу меньше значения, заданного в PulseLength собственность.

InitialPhaseOffset

Начальное фазовое смещение

Укажите начальное фазовое смещение входного модулированного сигнала в радианах как действительное числовое скалярное значение. Значение по умолчанию: 0.

SamplesPerSymbol

Количество выборок на входной символ

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

TracebackDepth

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

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

OutputDataType

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

Укажите тип выходных данных как один из int8 | int16 | int32 | double, при установке BitOutput свойство для false.

При установке BitOutput свойство для true, укажите тип выходных данных как один из logical | double. Значение по умолчанию: double.

Методы

шагДемодуляция с использованием метода GMSK и алгоритма Витерби
Общие для всех системных объектов
release

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

reset

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

Примеры

свернуть все

% Create a GMSK modulator, an AWGN channel, and a GMSK demodulator. Use a phase offset of pi/4.
    hMod = comm.GMSKModulator('BitInput', true, 'InitialPhaseOffset', pi/4);
    hAWGN = comm.AWGNChannel('NoiseMethod', ...
                    'Signal to noise ratio (SNR)','SNR',0);
    hDemod = comm.GMSKDemodulator('BitOutput', true, ...
                    'InitialPhaseOffset', pi/4);
% Create an error rate calculator, account for the delay caused by the Viterbi algorithm
    hError = comm.ErrorRate('ReceiveDelay', hDemod.TracebackDepth);
    for counter = 1:100
      % Transmit 100 3-bit words
      data = randi([0 1],300,1);
      modSignal = step(hMod, data);
      noisySignal = step(hAWGN, modSignal);
      receivedData = step(hDemod, noisySignal);
      errorStats = step(hError, data, receivedData);
    end
    fprintf('Error rate = %f\nNumber of errors = %d\n', ...
      errorStats(1), errorStats(2))
Error rate = 0.000133
Number of errors = 4

Этот пример иллюстрирует отображение двоичных последовательностей нулей и единиц на выход модулятора GMSK. Отношение также применимо для модуляции MSK.

Создайте модулятор GMSK, который принимает двоичные входы. Укажите длину импульса и отсчеты для каждого символа как 1.

gmsk = comm.GMSKModulator('BitInput',true,'PulseLength',1,'SamplesPerSymbol',1);

Создайте последовательность ввода всех нулей. Модулировать последовательность.

x = zeros(5,1);
y = gmsk(x)
y = 5×1 complex

   1.0000 + 0.0000i
  -0.0000 - 1.0000i
  -1.0000 + 0.0000i
   0.0000 + 1.0000i
   1.0000 - 0.0000i

Определите фазовый угол для каждой точки. Используйте unwrap функция, чтобы лучше показать тенденцию.

theta = unwrap(angle(y))
theta = 5×1

         0
   -1.5708
   -3.1416
   -4.7124
   -6.2832

Последовательность нулей приводит к сдвигу фазы на -δ/2 между выборками.

Сбросьте модулятор. Модулировать входную последовательность всех.

reset(gmsk)
x = ones(5,1);
y = gmsk(x)
y = 5×1 complex

   1.0000 + 0.0000i
  -0.0000 + 1.0000i
  -1.0000 - 0.0000i
   0.0000 - 1.0000i
   1.0000 + 0.0000i

Определите фазовый угол для каждой точки. Используйте unwrap функция, чтобы лучше показать тенденцию.

theta = unwrap(angle(y))
theta = 5×1

         0
    1.5708
    3.1416
    4.7124
    6.2832

Последовательность единиц заставляет фазу сдвигаться на + δ/2 между выборками.

Алгоритмы

Этот объект реализует алгоритм, входы и выходы, описанные на справочной странице блока основной полосы частот демодулятора GMSK. Свойства объекта соответствуют параметрам блока. Для GMSK фазовый сдвиг на символ равен δ/2, что является индексом модуляции 0,5.

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

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