comm.MSKDemodulator

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

Описание

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

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

  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

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

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

OutputDataType

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

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

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

Методы

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

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

reset

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

Примеры

свернуть все

% 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