comm.PNSequence

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

Описание

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

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

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

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

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

Создание

Описание

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

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

Свойства

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

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

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

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

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

  • Вектор символов или строковый скаляр полинома, постоянным термином которого является 1. Для получения дополнительной информации смотрите Представление Полиномов в Communications Toolbox.

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

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

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

Пример: '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' — Задайте начальные условия генератора псевдошумовой последовательности при помощи InitialConditions свойство.

  • 'Input port' — Задайте начальные условия генератора псевдошумовой последовательности при помощи initcond входной параметр.

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

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

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

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

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

Примечание

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

Зависимости

Чтобы включить это свойство, установите InitialConditionsSource к 'Property'.

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

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

  • 'Property' — Задайте маску при помощи Mask свойство.

  • 'Input port' — Задайте маску при помощи maskvec входной параметр.

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

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

  • Когда вы устанавливаете это свойство на целочисленный скаляр, значение является длиной сдвига. Объект переносит значения сдвига, которые отрицательны или больше, чем длина псевдошумовой последовательности.

  • Когда вы устанавливаете это свойство на бинарный вектор, его длина должна равняться степени порождающего полинома, заданного Polynomial свойство.

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

Зависимости

Чтобы включить это свойство, установите MaskSource к 'Property'.

Включите переменному размеру выходные параметры в виде числового или логического 0 ложь) или 1 TRUE). Включить переменному размеру выходные параметры при помощи outputsize входной параметр, набор это свойство к trueВключенный вход.The задает выходной размер псевдошумовой последовательности. Входное значение должно быть меньше чем или равно значению MaximumOutputSize свойство.

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

Максимальный выходной формат кадра в виде вектора из формы [m 1], где m является положительным целым числом. Первый элемент вектора указывает на максимальную длину выходной системы координат, и вторым элементом вектора должен быть 1.

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

Зависимости

Чтобы включить это свойство, установите VariableSizeOutput к true.

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

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

Включите вход сброса генератора в виде числового или логического 0 ложь) или 1 TRUE). Включить способности сбросить генератор последовательности с помощью resetseq входной параметр, набор это свойство к 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' режим.

Зависимости

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

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

Описание

пример

outSequence = pnSequence() выводит систему координат псевдошумовой последовательности в вектор-столбце на основе сконфигурированного объекта.

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

Чтобы включить этот синтаксис, установите InitialConditionsSource свойство к 'Input port'.

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

Чтобы включить этот синтаксис, установите MaskSource свойство к 'Input port'.

outSequence = pnSequence(outputsize) использование outputsize как выходной размер.

Чтобы включить этот синтаксис, установите VariableSizeOutput свойство к true.

outSequence = pnSequence(resetseq) использование resetseq как сигнал сброса.

Чтобы включить этот синтаксис, установите InitialConditionsSource свойство к 'Property' и ResetInputPort свойство к true.

outSequence = pnSequence(initcond,maskvec,outputsize)

Чтобы включить этот синтаксис, установите InitialConditionsSource свойство к 'Input port', ResetInputPort свойство к false, MaskSource свойство к 'Input port', и VariableSizeOutput свойство к true.

outSequence = pnSequence(maskvec,outputsize,resetseq)

Чтобы включить этот синтаксис, установите InitialConditionsSource свойство к 'Property', MaskSource свойство к 'Input port', VariableSizeOutput свойство к true, ResetInputPort свойство к true.

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

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

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

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

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

Примечание

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

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

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

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

Длина выходной последовательности в виде неотрицательного целого числа, n или вектора из формы [n 1], где n является положительным целым числом. Первый элемент вектора указывает на длину выходной системы координат, и вторым элементом вектора должен быть 1.

Скаляр или первый элемент вектора-строки должны быть меньше чем или равны первому элементу MaximumOutputSize значение свойства.

Сбросьте генератор последовательности в виде скаляра или вектор-столбца с длиной, равной количеству отсчетов на систему координат, заданную SamplesPerFrame свойство.

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

  • Когда вы задаете этот вход как вектор-столбец, объектный сброс к заданным начальным условиям на каждой выборке в выходной системе координат, которая выравнивается с ненулевым значением в векторе сброса.

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

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

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

При конфигурировании Системы генератора псевдошумовой последовательности object™ объект, у вас есть опции относительно того, как описать полином и маску. Этот рисунок задает генератор псевдошумовой последовательности с порождающим полиномом p(z)=z6+z+1 и маска m(z)=z5+z4+z2+1. Пример показывает несколько параметров форматирования, доступных, чтобы задать порождающий полином и маску, когда вы конфигурируете генератор псевдошумовой последовательности в этом рисунке.

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

pnseq1 = comm.PNSequence('Polynomial',[6 1 0], ...
    'Mask',[1 1 0 1 0 1],'SamplesPerFrame',20)
pnseq1 = 
  comm.PNSequence with properties:

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

Можно ввести полиномиальные экспоненты как вектор-строку с бинарным знаком, который представляет коэффициенты полинома в порядке убывающих степеней.

pnseq2 = comm.PNSequence('Polynomial',[1 0 0 0 0 1 1], ...
    'Mask',[1 1 0 1 0 1],'SamplesPerFrame',20)
pnseq2 = 
  comm.PNSequence with properties:

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

Можно также задать маску как скалярное значение с помощью mask2shift функция.

mask2shift ([1 0 0 0 0 1 1],[1 1 0 1 0 1])
ans = 22
pnseq3 = comm.PNSequence('Polynomial',[1 0 0 0 0 1 1], ...
    'Mask',22,'SamplesPerFrame',20)
pnseq3 = 
  comm.PNSequence with properties:

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

Используйте каждый объект псевдошумовой последовательности сгенерировать систему координат 20 выборок и сравнить сгенерированные последовательности.

out_1 = pnseq1();
out_2 = pnseq2();
out_3 = pnseq3();
isequal(out_1,out_2)
ans = logical
   1

isequal(out_1,out_3)
ans = logical
   1

Сгенерируйте систему координат с 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

Больше о

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

Ссылки

[1] Proakis, Цифровая связь Джона Г. 3-й редактор Нью-Йорк: Макгроу Хилл, 1995.

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

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

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

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

Объекты

Блоки

Введенный в R2008a