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

Обнаружьте преамбулу в данных

Описание

Система comm.PreambleDetector object™ обнаруживает преамбулу в последовательности входных данных. Преамбула является набором символов или битов, используемых в основанных на пакете системах связи, чтобы указать на запуск пакета. Объект детектора преамбулы находит местоположение соответствующим в конец преамбулы.

Обнаружить преамбулу в последовательности входных данных:

  1. Создайте объект comm.PreambleDetector и установите свойства объекта.

  2. Вызовите step, чтобы обнаружить присутствие преамбулы.

Примечание

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

Конструкция

prbdet = comm.PreambleDetector создает объект детектора преамбулы, prbdet, с помощью свойств по умолчанию.

prbdet = comm.PreambleDetector(Name,Value) задает дополнительные свойства с помощью пар Name,Value. Незаданные свойства имеют значения по умолчанию.

prbdet = comm.PreambleDetector(prb,Name,Value) задает преамбулу, prb в дополнение к тем свойствам, заданным при помощи пар Name,Value.

Пример:

prbdet = comm.PreambleDetector('Input','Bit','Detections','First');

Свойства

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

Тип входных данных, заданных как 'Symbol' или 'Bit'. Для двоичных входов, установленных этот параметр на 'Bit'. Для всех других входных параметров, установленных этот параметр на 'Symbol'. Данные о символе могут иметь тип данных single или double, в то время как битные данные могут, кроме того, поддержать Boolean, int8 и типы данных uint8.

Последовательность преамбулы, заданная как действительный или комплексный вектор-столбец. Объект использует эту последовательность, чтобы обнаружить присутствие преамбулы во входных данных. Если Input является 'Bit', преамбула должна быть двоичной последовательностью. Если Input является 'Symbol', преамбула может быть любой действительной или комплексной последовательностью.

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

Порог обнаружения, заданный как неотрицательный скаляр. Когда вычисленная метрика обнаружения больше, чем или равна Threshold, преамбула обнаруживается. Это свойство доступно, когда Input установлен в 'Symbol'. Настраиваемый.

Количество преамбул, чтобы обнаружить, заданный как 'All' или 'First'.

  • все Обнаруживает все преамбулы в последовательности входных данных.

  • 'First' — Обнаружьте только первую преамбулу в последовательности входных данных.

Методы

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

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

Примеры

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

Задайте шестибитную преамбулу.

prb = [1 0 0 1 0 1]';

Создайте объект детектора преамбулы использование преамбулы prb и взятие битных входных параметров.

prbdet = comm.PreambleDetector(prb,'Input','Bit');

Сгенерируйте последовательность двоичных данных, содержащую две преамбулы и использующую случайные биты, чтобы представлять поля данных.

pkt = [prb; randi([0 1],10,1); prb; randi([0 1],10,1)];

Найдите индексы этих двух преамбул. Индексы соответствуют в конец преамбул.

idx = prbdet(pkt)
idx = 2×1

     6
    22

Детектор правильно идентифицировал индексы 6 и 22 как конец этих двух преамбул, вставленных в последовательность.

Создайте преамбулу и примените модуляцию QPSK.

p1 = [0 1 2 3 3 2 1 0]';
p = [p1; p1];
prb = pskmod(p,4,pi/4,'gray');

Создайте объект comm.PreambleDetector с помощью преамбулы prb.

prbdet = comm.PreambleDetector(prb)
prbdet = 
  comm.PreambleDetector with properties:

         Input: 'Symbol'
      Preamble: [16x1 double]
     Threshold: 3
    Detections: 'All'

Сгенерируйте последовательность случайных символов. Первая последовательность представляет последние 20 символов от предыдущего пакета. Вторая последовательность представляет символы от текущего пакета.

d1 = randi([0 3],20,1);
d2 = randi([0 3],100,1);

Модулируйте эти две последовательности.

x1 = pskmod(d1,4,pi/4,'gray');
x2 = pskmod(d2,4,pi/4,'gray');

Создайте последовательность модулируемых символов, состоящих из остатка предыдущего пакета, преамбулы и текущего пакета.

y = [x1; prb; x2];

Добавьте белый Гауссов шум.

z = awgn(y,10);

Определите индекс преамбулы и метрику обнаружения.

[idx,detmet] = prbdet(z);

Вычислите число элементов в idx. Поскольку число элементов больше, чем один, порог обнаружения является слишком низким.

numel(idx)
ans = 80

Отобразите пять самых больших метрик обнаружения.

detmetSort = sort(detmet,'descend');
detmetSort(1:5)
ans = 5×1

   16.3115
   13.6900
   10.5698
    9.1920
    8.9706

Увеличьте порог и определите индекс преамбулы.

prbdet.Threshold = 15;
idx = prbdet(z)
idx = 36

Результат 36 соответствует сумме длины преамбулы (16) и остающиеся выборки в предыдущем пакете (20). Это указывает, что преамбула была успешно обнаружена.

Алгоритмы

Битные входные параметры

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

Входные параметры символа

Когда входные данные состоят из символов, детектор преамбулы использует алгоритм взаимной корреляции. Фильтр конечного импульсного ответа (FIR), в котором коэффициенты заданы из преамбулы, вычисляет взаимную корреляцию между входными данными и преамбулой. Когда последовательность входных выборок совпадает с преамбулой, фильтр, вывод достигает своего пика. Индекс пика соответствует в конец последовательности преамбулы во входных данных. Смотрите Дискретный КИХ-Фильтр для получения дополнительной информации о КИХ-алгоритме фильтра.

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

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

  • Если порог обнаружения будет слишком высок, алгоритм избежит обнаруживать peaks, или, в крайнем случае, не обнаружит peaks.

Следовательно, выбор порога обнаружения очень важен.

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

Введенный в R2017b

Для просмотра документации необходимо авторизоваться на сайте