comm.MSKDemodulator

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

Описание

comm.MSKDemodulator object демодулирует сигнал, который модулировался с помощью минимального метода манипулирования сдвига. Объект ожидает, что входной сигнал будет основополосным представлением когерентного модулируемого сигнала без предварительного кодирования. Начальная фаза возместила наборы свойств начальная фаза модулируемой формы волны.

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

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

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

Примечание

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

Конструкция

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

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

Свойства

BitOutput

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

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

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

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

InitialPhaseOffset

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

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

SamplesPerSymbol

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

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

TracebackDepth

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

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

OutputDataType

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

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

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

Методы

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

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

Примеры

свернуть все

% Create an MSK modulator, an AWGN channel, and an MSK demodulator.  Use a
% phase offset of pi/4.
 hMod = comm.MSKModulator('BitInput', true, ...
                    'InitialPhaseOffset', pi/4);
    hAWGN = comm.AWGNChannel('NoiseMethod', ...
                    'Signal to noise ratio (SNR)','SNR',0);
    hDemod = comm.MSKDemodulator('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.000000
Number of errors = 0

Этот пример иллюстрирует отображение двоичных последовательностей нулей и единиц к выходу модулятора 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 между выборками.

Алгоритмы

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

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

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