Генератор кода Адамара

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

Библиотека

Подбиблиотека Sequence Generators Источников Коммуникации

Описание

Блок Hadamard Code Generator генерирует код Адамара из матрицы Адамара, строки которой формируют ортогональный набор кодов. Ортогональные коды могут использоваться для распространения в системах связи, в которых получатель отлично синхронизируется с передатчиком. В этих системах despreading операция идеальна, когда коды декоррелируются полностью.

Коды Адамара являются отдельными строками матрицы Адамара. Матрицы Адамара являются квадратными матрицами, записи которых +1 или-1, и чьи строки и столбцы являются взаимно ортогональными. Если N является неотрицательной степенью 2, theN-by-N матрица Адамара, обозначил H N, задан рекурсивно можно следующим образом.

H1=[1]H2N=[HNHNHNHN]

N на n матрица Адамара имеет свойство это

H NHNT = N I N

где I N является N-by-N единичная матрица.

Блок Hadamard Code Generator выводит строку H N. Вывод биполярен. Вы задаете длину кода, N, параметром Code length. Code length должен быть степенью 2. Вы задаете индекс строки матрицы Адамара, которая является целым числом в области значений [0, 1..., N-1], параметром Code index.

Параметры

Code length

Положительное целое число, которое является степенью двойки, задающей длину кода Адамара.

Code index

Целое число между 0 и N-1, где N является Code length, задавая строку матрицы Адамара.

Sample time

Время между каждой выборкой выходного сигнала. Задайте как неотрицательный действительный скаляр.

Samples per frame

Количество выборок в одном столбце выходного сигнала. Задайте как положительный целочисленный скаляр.

Примечание

Время между выходными обновлениями равно продукту Samples per frame и Sample time. Например, если Sample time и Samples per frame равняются один, блок выводит выборку каждую секунду. Если Samples per frame увеличен до 10, то вектор 10 на 1 выводится каждые 10 секунд. Это гарантирует, что эквивалентная норма выработки не зависит от параметра Samples per frame.

Output data type

Выходной тип блока может быть задан как int8 или double. По умолчанию блок устанавливает это на double.

Simulate using

Выберите режим симуляции.

Code generation

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

Если режимом симуляции является Code generation, Системные объекты, соответствующие блокам, принимают максимум девяти входных параметров.

Interpreted execution

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

Примеры

Ортогональное распространение - однопользовательский по сравнению с 2D пользовательским сравнением

Эта модель в качестве примера сравнивает однопользовательскую систему по сравнению с 2D пользовательской системой передачи данных с этими двумя потоками данных, независимо распространяемыми различными ортогональными кодами.

Модель использует случайные двоичные данные, который является BPSK, модулировал (действительный), распространенный кодами Адамара длины 64 и затем передал по каналу AWGN. Получатель состоит из despreader, сопровождаемого демодулятором BPSK. Откройте модель здесь: hadamard_block_example1.

modelname = 'hadamard_block_example1';
open_system(modelname);
sim(modelname);

Для тех же данных и настроек канала, модель вычисляет производительность для одной - и 2D пользовательские передачи.

Обратите внимание на то, что для отдельных пользователей, коэффициенты ошибок являются точно тем же самым в обоих случаях. Это показывает, что совершенный despreading возможен из-за идеальных свойств взаимной корреляции кодов Адамара.

Чтобы экспериментировать с этой моделью далее, задайте различный Code length или Code index для отдельных пользователей, чтобы исследовать изменения в относительной производительности.

close_system(modelname, 0);

Ортогональное распространение - многопутевой сценарий

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

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

modelname = 'hadamard_block_example2';
open_system(modelname);
sim(modelname);

Для передачи данных с тем же кодом распространения, который использовался в первом примере, мы теперь видим, ухудшение в производительности при сравнении с тем примером (сравните эти 180 ошибок с 81 в предыдущем случае). Это может быть приписано неидеальным значениям автокорреляции ортогональных выбранных кодов распространения, который предотвращает совершенное разрешение отдельных путей. Следовательно, мы не видим достоинств объединения разнообразия.

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

close_system(modelname, 0);

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

Представлено до R2006a