Сгенерируйте код Адамара от ортогонального набора кодов
Подбиблиотека 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);