comm.Scrambler

Скремблируйте входной сигнал

Описание

Объект comm.Scrambler скремблирует скаляр или вектор-столбец входной сигнал.

Эта схема показывает операцию скремблера. Сумматоры работают по модулю N, где N является значением, заданным свойством CalculationBase.

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

Для скремблирования входного сигнала:

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

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

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

Создание

Описание

scrambler = comm.Scrambler создает скремблер System object™. Этот объект скремблирует входные данные с помощью линейного регистра сдвига с обратной связью, который вы задаете со свойством Polynomial.

пример

scrambler = comm.Scrambler(base,poly,cond) создает объект скремблера с помощью набора свойств CalculationBase для base, Полиномиальное свойство установлено в poly, и InitialConditions набора свойств чтобы cond.

Пример: comm.Scrambler(8,'1 + z^-2 + z^-3 + z^-5 + z^-7',[0 3 2 2 5 1 7]) устанавливает основу вычислений равной 8, и полином скремблера и начальные условия, как задано.

пример

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

Пример: comm.Scrambler('CalculationBase',2)

Свойства

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

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

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

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

Область значений входных данных, используемых в скремблере для операций с модулем, задаётся как неотрицательное целое число. Входные и выходные данные этого объекта являются целыми числами от 0 на CalculationBase1.

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

Связи для линейных регистров сдвига с обратной связью в скремблере, заданные как вектор символов, целочисленный вектор или двоичный вектор. The Polynomial свойство определяет, включен ли или выключен каждый переключатель в скремблере. Задайте полином как:

  • Вектор символов, такой как '1 + z^-6 + z^-8'. Для получения дополнительной информации об указании полиномов таким образом смотрите Представление символов многочленов.

  • Целочисленный вектор, такой как [0 -6 -8], с указанием коэффициентов скремблера в порядке убывания степеней z-1, где p (z-1) = 1 + p1z-1 + p2z-2 + ...

  • Двоичный вектор, такой как [1 0 0 0 0 0 1 0 1], с перечислением степеней z, которые появляются в полиноме, которые имеют коэффициент 1. В этом случае порядок полинома скремблирования на один меньше, чем двоичная длина вектора.

Пример: '1 + z^-6 + z^-8', [0 -6 -8], и [1 0 0 0 0 0 1 0 1] все представляют этот полином:

p (z-1) = 1 + z-6 + z-8

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

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

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

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

Начальные условия скремблера регистрируются, когда начинается симуляция, заданная как неотрицательный целочисленный вектор. Длина InitialConditions должен равняться порядку свойства Polynomial. Значения векторного элемента должны быть целыми числами от 0 в CalculationBase - 1.

Зависимости

Это свойство доступно, если для InitialConditionsSource задано значение 'Property'.

Порт сброса состояния скремблера, заданный как false или true. Если ResetInputPort является trueможно сбросить объект скремблера с помощью дополнительного входного параметра, сброса, при вызове объекта.

Зависимости

Это свойство доступно, если для InitialConditionsSource задано значение 'Property'.

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

Описание

пример

scrambledOut = scrambler(signal) скремблирует входной сигнал. Выход является совпадающий тип данных и длина в качестве вектора входа.

пример

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

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

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

Этот синтаксис применяется, когда вы задаете InitialConditionsSource равным 'Property' и ResetInputPort в true.

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

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

Входной сигнал, заданный как вектор-столбец.

Пример: scrambledOut = scrambler([0 1 1 0 1])

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

Начальные условия регистра скремблера, когда симуляция начинается, заданные как неотрицательный целочисленный вектор-столбец. Длина initcond должен равняться порядку свойства Polynomial. Значения векторного элемента должны быть целыми числами от 0 в CalculationBase - 1.

Пример: scrambledOut = scrambler(signal,[0 1 1 0]) соответствует возможным начальным состояниям регистра для скремблера с полиномиальным порядком 4 и вычислительную основу 2 или выше.

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

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

Пример: scrambledOut = scrambler(signal,0) скремблирует входной сигнал без сброса состояний скремблера.

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

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

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

Скремблированный выход, возвращенный как вектор-столбец с совпадающим типом данных и длиной, что и сигнал.

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

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

release(obj)

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

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

Примеры

свернуть все

Скремблировать и дескремблировать 8-арные данные с помощью comm.Scrambler и comm.Descrambler Системный objects™, имеющий расчетную основу 8.

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

N = 8;
scrambler = comm.Scrambler(N,'1 + z^-2 + z^-3 + z^-5 + z^-7', ...
    [0 3 2 2 5 1 7]);
descrambler = comm.Descrambler(N,[1 0 1 1 0 1 0 1], ...
    [0 3 2 2 5 1 7]);

Скремблируйте и дескремблируйте случайные целые числа. Отображение исходных данных, скремблированных данных и дескремблированных последовательностей данных.

data = randi([0 N-1],5,1);
scrData = scrambler(data);
deScrData = descrambler(scrData);
[data scrData deScrData]
ans = 5×3

     6     7     6
     7     5     7
     1     7     1
     7     0     7
     5     3     5

Проверьте, что дескремблированные данные совпадают с исходными данными.

isequal(data,deScrData)
ans = logical
   1

Скремблируйте и дескремблируйте четвертичные данные при изменении начальных условий между вызовами функции.

Создайте скремблер и дескремблер Системные объекты, имеющие основу вычислений 4. Установите InitialConditionsSource свойство к 'Input port' таким образом можно задать начальные условия как аргумент для объекта.

N = 4;
scrambler = comm.Scrambler(N,'1 + z^-3','InitialConditionsSource','Input port');
descrambler = comm.Descrambler(N,'1 + z^-3','InitialConditionsSource','Input port');

Предварительно выделите память для вектора ошибок, который будет использоваться для хранения ошибок, выводимых symerr функция.

errVec = zeros(10,1);

Скремблируйте и дескремблируйте случайные целые числа при изменении начальных условий, initCond, каждый раз, когда цикл выполняется. Используйте symerr функция для определения, результат ли операции скремблирования и дескремблирования в ошибках символов.

for k = 1:10
    initCond = randperm(3)';
    data = randi([0 N-1],5,1);
    scrData = scrambler(data,initCond);
    deScrData = descrambler(scrData,initCond);
    errVec(k) = symerr(data,deScrData);
end

Исследуйте errVec чтобы убедиться, что выходы дескремблера совпадают с исходными данными.

errVec
errVec = 10×1

     0
     0
     0
     0
     0
     0
     0
     0
     0
     0

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

.

См. также

Объекты

Блоки

Введенный в R2012a