Сгенерируйте код Адамара от ортогонального набора кодов
Подбиблиотека Sequence Generators Источников Коммуникации
Блок Hadamard Code Generator генерирует код Адамара из матрицы Адамара, строки которой формируют ортогональный набор кодов. Ортогональные коды могут использоваться для распространения в системах связи, в которых получатель отлично синхронизируется с передатчиком. В этих системах despreading операция идеальна, когда коды декоррелируются полностью.
Коды Адамара являются отдельными строками матрицы Адамара. Матрицы Адамара являются квадратными матрицами, записи которых +1 или-1, и чьи строки и столбцы являются взаимно ортогональными. Если N является неотрицательной степенью 2, theN-by-N матрица Адамара, обозначил H N, задан рекурсивно можно следующим образом.
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.
Положительное целое число, которое является степенью двойки, задающей длину кода Адамара.
Целое число между 0 и N-1, где N является Code length, задавая строку матрицы Адамара.
Время между каждой выборкой выходного сигнала. Задайте как неотрицательный действительный скаляр.
Количество выборок в одном столбце выходного сигнала. Задайте как положительный целочисленный скаляр.
Время между выходными обновлениями равно продукту Samples per frame и Sample time. Например, если Sample time и Samples per frame равняются один, блок выводит выборку каждую секунду. Если Samples per frame увеличен до 10, то вектор 10 на 1 выводится каждые 10 секунд. Это гарантирует, что эквивалентная норма выработки не зависит от параметра Samples per frame.
Выходной тип блока может быть задан как int8
или double
. По умолчанию блок устанавливает это на double
.
Выберите режим симуляции.
Code generation
На первом образцовом выполнении моделируйте и сгенерируйте код. Если структура блока не изменяется, последующие образцовые выполнения не регенерируют код.
Если режимом симуляции является Code generation
, Системные объекты, соответствующие блокам, принимают максимум девяти входных параметров.
Interpreted execution
Моделируйте модель, не генерируя код. Эта опция приводит к, быстрее запускают времена, но может замедлить последующую производительность симуляции.
Эта модель в качестве примера сравнивает однопользовательскую систему по сравнению с 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);