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

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

Описание

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

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

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

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

Примечание

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

Конструкция

H = comm.GMSKDemodulator создает Системный объект демодулятора, H. Этот объект демодулирует модулируемые данные входа Gaussian minimum shift keying (GMSK) с помощью алгоритма Viterbi.

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

Глубина Traceback для алгоритма Viterbi

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

OutputDataType

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

Задайте тип выходных данных как один из int8 | int16 | int32 | double, когда вы установите свойство BitOutput на false.

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

Методы

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

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

Примеры

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

% 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 Demodulator Baseband. Свойства объектов соответствуют параметрам блоков. Для GMSK сдвиг фазы на символ является π/2, который является индексом модуляции 0,5.

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

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