comm.PNSequence

Сгенерируйте псевдошумовую (PN) последовательность

Описание

The PNSequence объект генерирует последовательность псевдослучайных двоичных чисел с помощью регистра сдвига с линейной обратной связью (LFSR). Этот объект реализует LFSR с помощью генератора простого регистра сдвига (SSRG, или Fibonacci) строение. Псевдошумовые последовательности обычно используются для псевдослучайного скремблирования и в системах расширенного спектра с прямой последовательностью.

Чтобы сгенерировать псевдошумовую последовательность:

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

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

Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».

Создание

Описание

pnSequence = comm.PNSequence создает генератор псевдошумовой (PN) последовательности System object™. Этот объект генерирует последовательность псевдослучайных двоичных чисел с помощью регистра сдвига с линейной обратной связью (LFSR).

pnSequence = comm.PNSequence(Name,Value) устанавливает свойства с помощью одной или нескольких пар "имя-значение". Заключайте каждое имя свойства в кавычки.

Свойства

расширить все

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

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

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

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

  • Полиномиальный вектор символов, который включает в себя число 1.

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

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

Для получения дополнительной информации смотрите Представление символов полиномов.

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

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

Источник начальных условий, который определяет начало псевдошумовой последовательности, заданный как один из следующих:

  • 'Property' - Задайте начальные условия генератора PN-последовательности как двоичный скаляр или двоичный вектор с использованием InitialConditions свойство.

  • 'Input port' - Задайте начальные условия генератора PN-последовательности с помощью дополнительного входного параметра при вызове объекта. Объект принимает двоичный скаляр или двоичный вектор входа. Длина входа должна равняться степени полинома генератора, что Polynomial задает свойство.

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

Начальные условия регистра сдвига, когда начинается симуляция, заданные как двоичный скаляр или двоичный вектор.

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

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

Зависимости

Это свойство доступно при InitialConditionsSource установлено в 'Property'.

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

Источник маски, который определяет сдвиг псевдошумовой последовательности, заданный как одно из следующего:

  • 'Property' - Задайте маску как целочисленный скаляр или двоичный вектор с помощью Mask свойство.

  • 'Input port' - Задайте маску с помощью дополнительного входного параметра при вызове объекта. Маска может быть задана только как двоичный вектор, чья длина должна равняться степени полинома генератора, что Polynomial задает свойство.

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

Маска, которая определяет, как псевдошумовая последовательность смещается от своей начальной точки, заданной как целочисленный скаляр или двоичный вектор.

Когда вы устанавливаете это свойство в целочисленный скаляр, значение является длиной сдвига. Скалярный сдвиг может быть положительным или отрицательным. Когда у псевдошумовая последовательность есть период N = 2n - 1, где n является степенью полинома генератора, что Polynomial задает свойство, объект переносит значения сдвига, которые отрицательны или больше N.

Когда вы устанавливаете это свойство в двоичный вектор, его длина должна равняться степени полинома генератора, что Polynomial задает. Для получения дополнительной информации смотрите Сдвиг Псевдошумовой последовательности Начальная точка.

Вектор маски может быть вычислен с помощью shift2mask функция.

Зависимости

Это свойство доступно при MaskSource установлено в 'Property'.

Установите это свойство на true чтобы включить выходы переменного размера при помощи дополнительного входного параметра при вызове объекта. Активированный вход задает выход размер псевдошумовой последовательности. Входное значение должно быть меньше или равным значению MaximumOutputSize свойство.

Когда вы устанавливаете это свойство на false, а SamplesPerFrame свойство задает количество выхода образцов.

Максимальный размер выхода, заданный как положительное целое число двухэлементный вектор-строка, который обозначает максимальный размер выхода псевдошумовой последовательности. Второй элемент вектора должен быть 1.

Пример: [10 1] дает 10-by- 1 максимальный размер выходного сигнала.

Зависимости

Это свойство доступно при VariableSizeOutput установлено в true.

Количество выборок, выхода на систему координат объект псевдошумовой последовательности в виде положительного целого числа. Если вы задаете это свойство значение M, то объект выходов M выборки псевдошумовой последовательности, которая имеет период N = 2n - 1, где n представляет степень полинома генератора, что Polynomial задает.

Если вы задаете BitPackedOutput свойство к false, выборки являются битами из псевдошумовая последовательность. Если вы задаете BitPackedOutput свойство к true, тогда выход соответствует SamplesPerFrame группы битовых выборок.

Установите это свойство на true чтобы включить псевдошумовую последовательность сброс генератора при помощи дополнительного входного параметра при вызове объекта. Этот вход устанавливает состояния генератора псевдошумовой последовательности на начальные условия, заданные в InitialConditions свойство. Для получения дополнительной информации см. «Сброс сигнала».

Зависимости

Это свойство доступно при InitialConditionsSource установлено в 'Property'.

Опция вывода битовых слов, заданная как false или true. Установите это свойство на true для включения битовых выходов.

Когда BitPackedOutput является trueобъект выводит вектор-столбец длины M, которая содержит наиболее значимые битовые (MSB) первые целочисленные представления битовых слов длины P. M - количество выборок на систему координат, заданное в SamplesPerFrame свойство. P - размер битовых слов, заданный в NumPackedBits свойство.

Примечание

Первый бит слева в битовом слове содержит самый значительный бит для целочисленного представления.

Количество бит, упакованных в каждый выход слово данных, заданное в виде целого числа в область значений [1, 32].

Зависимости

Это свойство доступно при BitPackedOutput установлено в true.

Установите это свойство на true для получения подписанных, битовых, выходных слов. В этом случае a 1 в самом значительном бите (бит знака) указывает отрицательное значение. Свойство указывает отрицательные числа в формате дополнения двух.

Зависимости

Это свойство доступно при BitPackedOutput установлено в true.

Выход данных, заданный как один из следующих:

  • Когда BitPackedOutput установлено в false, OutputDataType можно 'double', 'logical', или 'Smallest unsigned integer'.

  • Когда BitPackedOutput установлено в true, OutputDataType можно 'double' или 'Smallest integer'.

Примечание

Для использования этого свойства в необходимо иметь Fixed-Point Designer™ лицензию 'Smallest unsigned integer' или 'Smallest integer' режим.

Зависимости

Допустимые настройки для OutputDataType зависит от настройки BitPackedOutput.

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

Описание

пример

outSequence = pnSequence() выводит систему координат псевдошумовой последовательности. Задайте длину системы координат с помощью SamplesPerFrame свойство. Период псевдошумовой последовательности равен N = 2n - 1, где n - степень полинома генератора, которую вы задаете в Polynomial свойство.

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

outSequence = pnSequence(initCond) обеспечивает дополнительный вход со значениями, определяющими начальные условия регистра сдвига линейной обратной связи.

Этот синтаксис применяется при установке InitialConditionsSource свойство объекта, которое должно быть 'Input port'.

outSequence = pnSequence(maskVec) предоставляет дополнительный вход, задающий вектор маски, который определяет, как псевдошумовая последовательность смещается от ее начальной точки.

Этот синтаксис применяется при установке MaskSource свойство объекта, которое должно быть 'Input port'.

outSequence = pnSequence(outputSize) предоставляет дополнительный вход, задающий размер выхода псевдошумовой последовательности.

Этот синтаксис применяется при установке VariableSizeOutput свойство объекта, которое должно быть true.

outSequence = pnSequence(reset) предоставляет дополнительный вход, указывающий, следует ли сбрасывать генератор псевдошумовой последовательности.

Этот синтаксис применяется при установке InitialConditionsSource на 'Property' и ResetInputPort на true.

outSequence = pnSequence(initCond,maskVec,outputSize)

outSequence = pnSequence(maskVec,outputSize,reset)

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

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

расширить все

Начальные условия регистра сдвига, когда начинается симуляция, заданные как бинарный скаляр или двоичный вектор. Когда вы задаете initCond для двоичного вектора длина вектора должна равняться степени Polynomial свойство. Скаляр, или, по крайней мере, один элемент initCond, должно быть ненулевым, чтобы объект генерировал ненулевую последовательность.

Пример: outSequence = pnSequence([1 1 0]) соответствует возможным начальным состояниям регистра для генератора псевдошумовой последовательности, заданным полиномом генератора степени 3.

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

Маска, которая определяет, как псевдошумовая последовательность смещается от ее начальной точки, заданной как двоичный вектор. Длина вектора должна равняться степени Polynomial свойство.

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

Когда вы задаете reset в качестве скаляра объект сбрасывается до начальных условий, заданных в InitialConditions Свойство и генерирует новый выход системы координат.

Когда вы задаете reset как векторы-столбцы, длина вектора должна равняться количеству выборок на систему координат, заданному в SamplesPerFrame. Входной параметр вектора-столбца позволяет несколько сбросов в выход системы координат. Ненулевое значение в i-м элементе вектора вызовет сброс в i-м элементе сгенерированной псевдошумовая последовательность.

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

расширить все

Псевдошумовая последовательность, сгенерированный объектом, возвращается как вектор-столбец.

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

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

release(obj)

расширить все

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

Примеры

свернуть все

Сгенерируйте 14-символьную систему координат максимальной длины псевдошумовой последовательности заданный полином генератора, x3+x2+1.

Сгенерируйте псевдошумовые последовательности данные при помощи comm.PNSequence объект. Последовательность повторяется, поскольку она содержит 14 выборки, в то время как максимальная длина последовательности составляет всего 7 выборки (23-1).

pnSequence = comm.PNSequence('Polynomial',[3 2 0], ...
    'SamplesPerFrame',14,'InitialConditions',[0 0 1]);
x1 = pnSequence();
[x1(1:7) x1(8:14)]
ans = 7×2

     1     1
     0     0
     0     0
     1     1
     1     1
     1     1
     0     0

Создайте другую последовательность максимальной длины на основе полинома генератора, x4+x+1. Поскольку это полином четвертого порядка, последовательность повторяется после 15 выборок (24-1).

pnSequence2 = comm.PNSequence('Polynomial','x^4+x+1', ...
    'InitialConditions',[0 0 0 1],'SamplesPerFrame',30);
x2 = pnSequence2();
[x2(1:15) x2(16:30)]
ans = 15×2

     1     1
     0     0
     0     0
     0     0
     1     1
     0     0
     0     0
     1     1
     1     1
     0     0
      ⋮

The comm.PNSequence системный объект реализует регистр сдвига с линейной обратной связью (LFSR) с помощью генератора простого сдвига регистра (SSRG, или строение Фибоначчи). Это строение отличается от генератора модульного регистра сдвига (MSRG, или строение Галуа) фазовым различием, которая может быть определена эмпирически из системного объекта.

Это различие фаз может быть задана как Mask параметр для comm.PNSequence системный объект для генерации эквивалентных выходов строения MSRG. Блок представляет реализацию 5-битного LFSR в строения Galois (MSRG).

Загрузите файл GaloisLFSR. Файл содержит следующие переменные, которые определяют свойства и выходные псевдошумовые последовательности 5-битного Galois LFSR:

  • polyVec: Полином генератора

  • polySize: Степень полинома генератора

  • initStatesНачальные условия сдвига регистра

  • maskVar: Маска для сдвига псевдошумовой последовательности

  • pn_msrg: Выход PN последовательности максимальной длины из 5-битного Galois LFSR

load GaloisLFSR

Сгенерируйте псевдошумовые последовательности данные при помощи comm.PNSequence объект с тем же набором свойств, используемый для реализации 5-битного Galois LFSR. Сравните эту псевдошумовую последовательность с выходом 5-битного Galois LFSR. Две последовательности отличаются сдвигом фазы.

pnSequence = comm.PNSequence('Polynomial',polyVec,'InitialConditions',initStates,...
    'Mask',maskVar,'SamplesPerFrame',2^polySize-1);

pn = pnSequence();

isequal(pn,pn_msrg)
ans = logical
   0

Вычислите сдвиг фазы между двумя строениями. Установите значение Mask свойство, основанное на этом сдвиге фазы.

for i = 1:length(pn)
    exp_pn = [pn(i:end);pn(1:(i-1))];
    if isequal(exp_pn,pn_msrg)
        break
    end
end

maskVar = i-1;

Сгенерируйте псевдошумовые последовательности данные при помощи comm.PNSequence системный объект с измененным Mask значение свойства. Сравните эту последовательность с выходами 5-битного Galois LFSR. Эти две последовательности теперь равны.

pnSequence_mod = comm.PNSequence('Polynomial',polyVec,'InitialConditions',initStates,...
    'Mask',maskVar,'SamplesPerFrame',2^polySize-1);

pn_mod = pnSequence_mod();

isequal(pn_mod,pn_msrg)
ans = logical
   1

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

h1 = comm.PNSequence('Polynomial', [1 0 0 0 0 1 1], 'InitialConditions', [1 1 0 1 0 1]);
h2 = comm.PNSequence('Polynomial', [1 0 0 0 0 1 1], 'Mask', 22);
mask2shift ([1 0 0 0 0 1 1],[1 1 0 1 0 1])
ans = 22

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

h = comm.PNSequence('Polynomial', [6 1 0], 'InitialConditions', [1 1 0 1 0 1])
h = 
  comm.PNSequence with properties:

                 Polynomial: [6 1 0]
    InitialConditionsSource: 'Property'
          InitialConditions: [1 1 0 1 0 1]
                 MaskSource: 'Property'
                       Mask: 0
         VariableSizeOutput: false
            SamplesPerFrame: 1
             ResetInputPort: false
            BitPackedOutput: false
             OutputDataType: 'double'

Алгоритмы

расширить все

Ссылки

[1] Proakis, John G. Digital Communications. 3-й ред. Нью-Йорк: McGraw Hill, 1995.

[2] Ли, Дж. С. и Л. Э. Миллер. Руководство по системному проектированию CDMA. Бостон и Лондон. Дом Артека, 1998.

[3] Golomb, S.W. Shift Register Sequences. Лагуна Хилс. Eegean Park Press, 1967.

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

.

См. также

Объекты

Блоки

Введенный в R2012a