comm.GMSKDemodulator

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

Описание

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

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

  1. Определите и настройте объект демодулятора GMSK. См. «Конструкция».

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

Примечание

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

Конструкция

H = comm.GMSKDemodulator создает демодулятор Системного объекта, H. Этот объект демодулирует входные Гауссовы данные с минимальной манипуляцией сдвигом (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

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

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

OutputDataType

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

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

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

Методы

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

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

reset

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

Примеры

свернуть все

% 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