Сгенерируйте код Адамара от ортогонального набора кодов
Подбиблиотека 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, задавая строку матрицы Адамара.
Выведите шаг расчета в виде -1
или положительная скалярная величина, которая представляет время между каждой выборкой выходного сигнала. Если Sample time установлен в -1
, шаг расчета наследован от нисходящего потока. Для получения информации об отношении между Sample time и Samples per frame, смотрите
Демонстрационную Синхронизацию.
Выборки на систему координат в виде положительного целого числа, указывающего на количество выборок на систему координат в одном канале выходных данных. Для получения информации об отношении между Sample time и 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);