Создайте объект генератора псевдошумовой последовательности
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
значения
Получите фактический или эквивалентный Shift
значение свойства
Получите фактический или эквивалентный Mask
значение свойства
Сделайте независимую копию commsrc.pn
объект
Отобразите свойства объекта генератора псевдошумовой последовательности
Каждый раз, когда это свойство установлено, оно сбросит целый объект. В дополнение к изменению полиномиальных значений, 'CurrentStates'
, 'InitialStates'
, и 'Mask'
будет установлен в их значения по умолчанию ('NumBitsOut'
останется то же самое), и никакие предупреждения не будут выданы.
Каждый раз, когда это свойство установлено, оно также установит 'CurrentStates'
к новому 'InitialStates'
установка.
generate
метод производит последовательность псевдослучайного шума (PN) с помощью линейного сдвигового регистра обратной связи (LFSR). LFSR реализован с помощью простого генератора сдвигового регистра (SSRG или Фибоначчи) настройка, как показано ниже.
Все регистры r в генераторе обновляют свои значения на каждом временном шаге согласно значению входящей стрелы к сдвиговому регистру. Сумматоры выполняют сложение по модулю 2. Сдвиговый регистр описан 'GenPoly'
свойство (полином генератора), который является примитивным бинарным полиномом в z, grzr+gr-1zr-1+gr-2zr-2 +... +g0. Содействующий GK равняется 1, если существует связь от k-ого регистра, как помечено в предыдущей схеме, к сумматору. Ведущий термин 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] |