comm.GMSKDemodulator

Демодулируйте модулируемый GMSK сигнал с помощью алгоритма Viterbi

Описание

comm.GMSKDemodulator Система object™ использует алгоритм Viterbi, чтобы демодулировать сигнал, который модулировался с помощью метода Гауссова минимального манипулирования сдвига (GMSK). Вход представляет собой репрезентацию модулированного сигнала.

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

  1. Создайте comm.GMSKDemodulator объект и набор его свойства.

  2. Вызовите объект с аргументами, как будто это была функция.

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты?

Создание

Описание

пример

gmskdemodulator = comm.GMSKDemodulator создает Системный объект демодулятора, который демодулирует вход модулируемые GMSK данные при помощи алгоритма Viterbi.

gmskdemodulator = comm.GMSKDemodulator(Name,Value) свойства наборов с помощью одной или нескольких пар "имя-значение". Например, 'PulseLength',6 задает длину Гауссовой импульсной формы как 6 интервалов символа.

Свойства

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

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

Если свойство является настраиваемым, можно изменить его значение в любое время.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты.

Опция к выходным данным как биты в виде числового или логического 0 ложь) или 1 TRUE).

  • Когда вы устанавливаете это свойство на false, выход вызова Системного объекта является вектор-столбцом элементов -1 или 1.

  • Когда вы устанавливаете это свойство на true, выход вызова Системного объекта является вектором столбца двоичных данных из элементов 0 или 1.

Типы данных: логический

Продукт полосы пропускания и время символа для Гауссовой импульсной формы в виде значения положительной скалярной величины. Форма больше деталей, см. Алгоритмы.

Типы данных: double

Импульсная длина в виде положительного целого числа. Импульсное значение длины представляет длину Гауссовой импульсной формы в интервалах символа.

Типы данных: double

Предыстория символа в виде -1, 1, или вектор с элементами равняется тем значениям. Если значение является вектором, то его длина должна быть той меньше, чем значение свойства PulseLength. Предыстория символа указывает на символы данных, которые модулятор использует до первого вызова Системного объекта в противоположном хронологическом порядке.

Типы данных: double

Смещение начальной фазы модулируемой формы волны в радианах в виде числового скаляра.

Типы данных: double

Количество отсчетов на символ в виде положительного целого числа. Количество отсчетов на символ представляет фактор повышающей дискретизации от входных выборок, чтобы вывести выборки.

Типы данных: double

Глубина Traceback для алгоритма Viterbi в виде положительного целого числа.

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

Типы данных: double

Выходные данные вводят в виде одного из этих значений.

  • int8int16int32, или double — Используйте одно из этих значений, когда вы установите свойство BitOutput на false.

  • logical или double — Используйте одно из этих значений, когда вы установите BitOutput свойство к true.

Использование

Синтаксис

Описание

Y = gmskdemodulator(X) применяет демодуляцию GMSK к модулируемой GMSK форме волны и возвращает демодулируемый входной сигнал.

Входные параметры

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

Модулируемый GMSK входной сигнал в виде вектор-столбца.

Длина входного сигнала должна быть целочисленным кратным свойство SamplesPerSymbol.

Типы данных: double | single
Поддержка комплексного числа: Да

Выходные аргументы

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

Демодулируемый сигнал, возвращенный как вектор-столбец с длиной, равняется N / SamplesPerSymbol. N является длиной входного сигнала, X. Для получения дополнительной информации о выходном типе данных, смотрите свойство OutputDataType.

  • Когда вы устанавливаете BitOutput свойство к falseY возвращен как вектор-столбец элементов -1 или 1.

  • Когда вы устанавливаете BitOutput свойство к trueY возвращен как вектор столбца двоичных данных из элементов 0 или 1.

Типы данных: double | logical

Функции объекта

Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj, используйте этот синтаксис:

release(obj)

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

stepЗапустите алгоритм Системного объекта
releaseВысвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики
resetСбросьте внутренние состояния Системного объекта

Примеры

свернуть все

Создайте модулятор GMSK и пару демодулятора. Создайте объект канала AWGN.

gmskmodulator = comm.GMSKModulator('BitInput',true, ...
                             'InitialPhaseOffset',pi/4);
channel = comm.AWGNChannel('NoiseMethod', ...
                           'Signal to noise ratio (SNR)', ...
                           'SNR',0);
gmskdemodulator = comm.GMSKDemodulator('BitOutput',true, ...
                                 'InitialPhaseOffset',pi/4);

Создайте калькулятор коэффициента ошибок и объясните задержку между модулятором и демодулятором, вызванным алгоритмом Viterbi.

errorRate = comm.ErrorRate('ReceiveDelay', ...
                            gmskdemodulator.TracebackDepth);

Обработайте 100 кадров цикличного выполнения данных через эти шаги.

  1. Сгенерируйте векторы с 300 элементами случайных двоичных данных.

  2. GMSK - модулирует данные.

  3. Передайте модулируемые данные через канал AWGN.

  4. GMSK - демодулирует данные.

  5. Соберите статистику ошибок на системах координат данных.

for counter = 1:100
   % Transmit 100 3-bit words
   data = randi([0 1],300,1);
   modSignal = gmskmodulator(data);
   noisySignal = channel(modSignal);
   receivedData = gmskdemodulator(noisySignal);
   errorStats = errorRate(data, receivedData);
end

Отобразите статистику ошибок.

fprintf('Error rate = %f\nNumber of errors = %d\n', ...
         errorStats(1), errorStats(2))
Error rate = 0.000133
Number of errors = 4

Алгоритмы

BandwidthTimeProduct свойство представляет полосу пропускания, умноженную на время. Используйте это свойство уменьшать полосу пропускания за счет увеличенной интерференции межсимвола. PulseLength свойство измеряет длину Гауссовой импульсной формы в интервалах символа. Эти уравнения задают форму импульса частоты. B b представляет полосу пропускания импульса, и T является длительностью символа. Q(t) является дополнительной кумулятивной функцией распределения.

g(t)=12T{Q[2πBbtT2ln(2)]Q[2πBbt+T2ln(2)]}Q(t)=t12πeτ2/2dτ

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

Ссылки

[1] Андерсон, Джон Б., скалистая вершина Олин и Карл-Эрик Зундберг. Цифровая фазовая модуляция. Нью-Йорк: нажатие пленума, 1986.

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

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