commsrc.pn

Создайте объект генератора псевдошумовой последовательности

Синтаксис

h = commsrc.pn
h = commsrc.pn(property1,value1,...)

Описание

h = commsrc.pn создает объект генератора псевдошумовой последовательности по умолчанию h и эквивалентен следующему:

H = commsrc.pn('GenPoly',       [1 0 0 0 0 1 1], ...
              'InitialStates', [0 0 0 0 0 1],   ...
              'CurrentStates', [0 0 0 0 0 1],   ...
              'Mask',          [0 0 0 0 0 1],   ...
              'NumBitsOut',    1)

или

H = commsrc.pn('GenPoly',       [1 0 0 0 0 1 1], ...
              'InitialStates', [0 0 0 0 0 1],   ...
              'CurrentStates', [0 0 0 0 0 1],   ...
              'Shift',         0,               ...
              'NumBitsOut',    1)

h = commsrc.pn(property1,value1,...) создает объект генератора псевдошумовой последовательности, h, со свойствами, которые вы задаете как пары свойства/значения.

Свойства

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

СвойствоОписание
GenPolyВекторный массив полинома генератора битов; должен быть порядок убывания
InitialStatesВекторный массив (с продолжительностью порядка полинома генератора) начальных значений сдвигового регистра (в битах)
CurrentStatesВекторный массив (с продолжительностью порядка полинома генератора) существующих значений сдвигового регистра (в битах)
NumBitsOutКоличество битов, чтобы вывести в каждом generate вызов метода
Mask или Shift

Вектор маски двоичного файла, который 0 и 1 значение используется, чтобы задать, какие биты состояния сдвигового регистра являются XORed, чтобы произвести получившееся выходное битовое значение.

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

'GenPoly' значения свойств задают связи сдвигового регистра. Введите эти значения или как бинарный вектор или как вектор экспонент ненулевых условий полинома генератора в порядке убывания степеней. Для бинарного векторного представления первые и последние элементы вектора должны быть 1. Для упорядоченного убыванию полиномиального представления последний элемент вектора должен быть 0. Для получения дополнительной информации и примеры, смотрите раздел LFSR SSRG Details этой страницы.

Методы

Генератор псевдошумовой последовательности оборудован следующими методами.

сгенерировать

Сгенерируйте [NumBitsOut x 1] значения генератора псевдошумовой последовательности

сброс

Установите CurrentStates значения к InitialStates значения

getshift

Получите фактический или эквивалентный Shift значение свойства

getmask

Получите фактический или эквивалентный Mask значение свойства

копия

Сделайте независимую копию commsrc.pn объект

disp

Отобразите свойства объекта генератора псевдошумовой последовательности

Побочные эффекты установки определенных свойств

Установка свойства GenPoly

Каждый раз, когда это свойство установлено, оно сбросит целый объект. В дополнение к изменению полиномиальных значений, 'CurrentStates', 'InitialStates', и 'Mask' будет установлен в их значения по умолчанию ('NumBitsOut' останется то же самое), и никакие предупреждения не будут выданы.

Установка свойства InitialStates

Каждый раз, когда это свойство установлено, оно также установит 'CurrentStates' к новому 'InitialStates' установка.

Детали LFSR SSRG

generate метод производит последовательность псевдослучайного шума (PN) с помощью линейного сдвигового регистра обратной связи (LFSR). LFSR реализован с помощью простого генератора сдвигового регистра (SSRG или Фибоначчи) настройка, как показано ниже.

Все регистры r в генераторе обновляют свои значения на каждом временном шаге согласно значению входящей стрелы к сдвиговому регистру. Сумматоры выполняют сложение по модулю 2. Сдвиговый регистр описан 'GenPoly' свойство (полином генератора), который является примитивным бинарным полиномом в z, grzr+gr-1zr-1+gr-2zr-2 +... +g0. Содействующий GK равняется 1, если существует связь от регистра kth, как помечено в предыдущей схеме, к сумматору. Ведущий термин gr и постоянный термин g0 'GenPoly' свойство должно быть 1, потому что полином должен быть примитивным.

Можно задать параметр Generator polynomial с помощью любого из этих форматов:

  • Вектор, который перечисляет коэффициенты полинома в порядке убывания степеней. Первые и последние записи должны быть 1. Обратите внимание на то, что длина этого вектора является еще одним, чем степень полинома генератора.

  • Вектор, содержащий экспоненты z для ненулевых условий полинома в порядке убывания степеней. Последней записью должен быть 0.

Например, [1 0 0 0 0 0 1 0 1] и [8 2 0] представляйте тот же полином, p (z) = z8 + z2 + 1.

Параметр Initial states является вектором, задающим начальные значения регистров. Параметр Initial states должен удовлетворить этим критериям:

  • Все элементы вектора Initial states должны быть двоичными числами.

  • Длина вектора Initial states должна равняться степени полинома генератора.

    Примечание

    По крайней мере один элемент вектора Initial states должен быть ненулевым для блока, чтобы сгенерировать ненулевую последовательность. Таким образом, начальное состояние по крайней мере одного из регистров должно быть ненулевым.

Например, следующая таблица указывает на два набора значений параметров, которые соответствуют полиному генератора p (z) = z8 + z2 + 1.

КоличествоПример 1Пример 2
Generator polynomial   g1 = [1 0 0 0 0 0 1 0 1]   g2 = [8 2 0]
Степень полинома генератора 8, который является length(g1)-1 8
Initial states [1 0 0 0 0 0 1 0] [1 0 0 0 0 0 1 0] 

Output mask vector (or scalar shift value) переключает начальную точку выходной последовательности. С настройкой по умолчанию для этого параметра приезжает единственная связь, стрела пометила m0, который соответствует сдвигу 0. Параметр описан более подробно ниже.

Можно переключить начальную точку псевдошумовой последовательности с Output mask vector (or scalar shift value). Можно задать параметр любым из двух способов:

  • Целое число, представляющее длину сдвига

  • Бинарный вектор, названный вектором маски, длина которого равна степени полинома генератора

Различие между выходом блока, когда вы устанавливаете Output mask vector (or scalar shift value) на 0, по сравнению с положительным целым числом d, показывают в следующей таблице.

T = 0 T = 1 T = 2 ... T = d T = d+1
Shift = 0 x0 x1 x2 ... xd xd+1
Shift = d xd xd+1 xd+2 ... x2d x2d+1

В качестве альтернативы можно установить Output mask vector (or scalar shift value) на бинарный вектор, соответствуя полиному в z, mr-1zr-1 + mr-2zr-2 +... + m1z + m0, степени в большей части r-1. Соответствие вектора маски сдвигу d является вектором, который представляет m (z) = zd g по модулю (z), где g (z) является полиномом генератора. Например, если степень полинома генератора равняется 4, то вектором маски, соответствующим d = 2, является [0 1 0 0], который представляет полином m (z) = z2. Предыдущая принципиальная схема показывает, как Output mask vector (or scalar shift value) реализован, когда вы задаете его как вектор маски. Настройкой по умолчанию для Output mask vector (or scalar shift value) является 0. Можно вычислить вектор маски использование функции Communications Toolbox™ shift2mask.

Последовательности максимальной длины

Если вы хотите сгенерировать последовательность максимальной возможной длины для фиксированной степени, r, полинома генератора, можно установить Generator polynomial на значение из следующей таблицы. См. Proakis, Джона Г., Цифровую связь, Третий выпуск, Нью-Йорк, Макгроу Хилла, 1995 для получения дополнительной информации о настройках сдвигового регистра, которые представляют эти полиномы.

rПолином генератораrПолином генератора
2 [2 1 0] 21 [21 19 0]
3 [3 2 0] 22 [22 21 0]
4 [4 3 0] 23 [23 18 0]
5 [5 3 0] 24 [24 23 22 17 0]
6 [6 5 0] 25 [25 22 0]
7 [7 6 0] 26 [26 25 24 20 0]
8 [8 6 5 4 0] 27 [27 26 25 22 0]
9 [9 5 0] 28 [28 25 0]
10 [10 7 0] 29 [29 27 0]
11 [11 9 0] 30 [30 29 28 7 0]
12 [12 11 8 6 0] 31 [31 28 0]
13 [13 12 10 9 0] 32 [32 31 30 10 0]
14 [14 13 8 4 0] 33 [33 20 0]
15 [15 14 0] 34 [34 15 14 1 0]
16 [16 15 13 4 0] 35 [35 2 0]
17 [17 14 0] 36 [36 11 0]
18 [18 11 0] 37 [37 12 10 2 0]
19 [19 18 17 14 0] 38 [38 6 5 1 0]
20 [20 17 0] 39 [39 8 0]
40 [40 5 4 3 0] 47 [47 14 0]
41 [41 3 0] 48 [48 28 27 1 0]
42 [42 23 22 1 0] 49 [49 9 0]
43 [43 6 4 3 0] 50 [50 4 3 2 0]
44 [44 6 5 2 0] 51 [51 6 3 1 0]
45 [45 4 3 1 0] 52 [52 3 0]
46 [46 21 10 1 0] 53 [53 6 2 1 0]

Примеры

свернуть все

Настройте генератор псевдошумовой последовательности. Задайте полином в бинарном векторном формате или экспоненциальном векторном формате.

Этот рисунок задает генератор псевдошумовой последовательности полиномом генератора p(z)=z6+z+1.

Задайте этот генератор псевдошумовой последовательности можно следующим образом:

h1 = commsrc.pn('GenPoly', [1 0 0 0 0 1 1], 'Mask', [1 1 0 1 0 1]);
h2 = commsrc.pn('GenPoly', [1 0 0 0 0 1 1], 'Shift', 22);
mask2shift ([1 0 0 0 0 1 1],[1 1 0 1 0 1])
ans = 22

В качестве альтернативы можно ввести GenPoly как экспоненты z для ненулевых условий полинома в порядке убывания степеней:

h = commsrc.pn('GenPoly', [6 1 0], 'Mask', [1 1 0 1 0 1])
h = 
          GenPoly: [1 0 0 0 0 1 1]
    InitialStates: [0 0 0 0 0 1]
    CurrentStates: [0 0 0 0 0 1]
             Mask: [1 1 0 1 0 1]
       NumBitsOut: 1

Обычно commsrc.pn используется, чтобы вывести псевдослучайные потоки данных.

Создайте объект PN.

h = commsrc.pn('Shift',0);

Выведите 10 битов PN.

set(h,'NumBitsOut',10);
generate(h)
ans = 10×1

     1
     0
     0
     0
     0
     0
     1
     0
     0
     0

Выведите еще 10 битов PN.

generate(h)
ans = 10×1

     0
     1
     1
     0
     0
     0
     1
     0
     1
     0

Сбросьте объект к начальным значениям состояния сдвигового регистра.

reset(h);

Выведите 4 бита PN.

set(h,'NumBitsOut',4);
generate(h)
ans = 4×1

     1
     0
     0
     0

Когда commsrc.pn объект копируется, его состояния также копируются. Последующие выходные параметры от скопированного объекта, вероятно, будут отличаться от начальных выходных параметров от исходного объекта.

Создайте объект PN и выведите последовательность от него.

h = commsrc.pn('Shift', 0);
set(h, 'NumBitsOut', 5);
generate(h)
ans = 5×1

     1
     0
     0
     0
     0

Сделайте копию h. Сгенерируйте последовательность от скопированного объекта. Поскольку копия была сделана после состояния h измененный, начальная последовательность сгенерирована g отличается от начальной последовательности, сгенерированной от h.

g=copy(h);
generate(g)
ans = 5×1

     0
     1
     0
     0
     0

Но если g сбрасывается, это генерирует ту же последовательность что h сгенерированный.

reset(g);
generate(g)
ans = 5×1

     1
     0
     0
     0
     0

Смотрите также

|

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