comm.PNSequence

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

Описание

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

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

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

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

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

Создание

Описание

pnSequence = comm.PNSequence создает псевдошумовую (PN) Систему генератора последовательности 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) = z 8 + z 2 + 1.

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

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

  • 'Property' — Задайте начальные условия генератора псевдошумовой последовательности как бинарный скалярный или бинарный вектор с помощью InitialConditions свойство.

  • 'Input port' — Задайте начальные условия генератора псевдошумовой последовательности при помощи дополнительного входного параметра при вызове объекта. Объект принимает бинарный скалярный или бинарный векторный вход. Длина входа должна равняться степени полинома генератора что 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- 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 получить подписанный, побитно упакованный, выходные слова. В этом случае, 1 в старшем значащем бите (знаковый бит) указывает на отрицательную величину. Свойство указывает на отрицательные числа в дополнительном формате two.

Зависимости

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

Выходные данные вводят в виде одного из них:

  • Когда BitPackedOutput установлен в false, OutputDataType может быть 'double'логический, или '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. Вход вектор-столбца позволяет несколько сброса в выходной системе координат. Ненулевое значение в ith элементе вектора вызовет сброс в ith элементе сгенерированной псевдошумовой последовательности.

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

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

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

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

Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием 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
      ⋮

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

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

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

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

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

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

  • maskVar: Маска, чтобы переключить псевдошумовую последовательность

  • pn_msrg: Выведите псевдошумовую последовательность максимальной длины от 5-битного Галуа LFSR

load GaloisLFSR

Сгенерируйте данные о псевдошумовой последовательности при помощи comm.PNSequence объект с тем же набором свойств раньше реализовывал 5-битный Галуа LFSR. Сравните эту псевдошумовую последовательность с выходом 5-битного Галуа 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-битного Галуа 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, Цифровая связь Джона Г. 3-й редактор Нью-Йорк: Макгроу Хилл, 1995.

[2] Ли, J. S. и Л. Э. Миллер. Руководство системного проектирования CDMA. Бостон и Лондон. Дом Artech, 1998.

[3] Golomb, S.W. Последовательности сдвигового регистра. Лагуна-Хиллз. Эгейский парк Press, 1967.

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

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

Объекты

Блоки

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