Correlation
Взаимнокорреляционная функция двух входных данных.
Описание
Блок Correlation вычисляет взаимнокорреляционную функцию двух входных массивов размерности N вдоль первого измерения. Вычисление может быть выполнено во временной или частотной области. Вы можете указать область с помощью параметра Computation domain.
Во временной области блок свертывает первый входной сигнал с обратным по времени комплексным сопряжением второго входного сигнала .
В частотной области для вычисления взаимной корреляции блок:
-
Выполняет преобразование Фурье обоих входных сигналов, и .
-
Перемножает и , где — комплексное сопряжение.
-
Вычисляет обратное преобразование Фурье для произведения.
Если вы задаете для Computation domain значение Fastest
, блок выбирает область с минимальным количеством вычислений.
Порты
Вход
Port_1 — первый вход данных
вектор
| матрица
Блок принимает многоканальные и многомерные входные данные с вещественным или комплексным значением. Входным сигналом может быть сигнал с фиксированной точкой, когда вы устанавливаете для Computation domain значение Time
. Когда один или оба входных сигнала являются комплексными, выходной сигнал также является комплексным.
Типы данных: Float16
, Float32
, Float64
, Int8
, Int16
, Int32
, Int64
, Int128
, UInt8
, UInt16
, UInt32
, UInt64
, UInt128
, Fixed
Поддержка комплексных чисел: Да
Port_2 — второй вход данных
вектор
| матрица
Блок принимает многоканальные и многомерные входные данные с вещественным или комплексным значением. Входным сигналом может быть сигнал с фиксированной точкой, когда вы устанавливаете для Computation domain значение Time
. Когда один или оба входных сигнала являются комплексными, выходной сигнал также является комплексным.
Типы данных: Float16
, Float32
, Float64
, Int8
, Int16
, Int32
, Int64
, Int128
, UInt8
, UInt16
, UInt32
, UInt64
, UInt128
, Fixed
Поддержка комплексных чисел: Да
Выход
Port_1 — взаимно коррелированный выходной сигнал
вектор
| матрица
Взаимно коррелированный вывод двух входных сигналов.
Когда входные данные представляют собой многомерные массивы, блок выводит многомерный массив, где все измерения, за исключением первого измерения, совпадают с входным массивом. Например,
-
Когда входы и имеют размеры Mu на N на P и Mv на N на P соответственно, блок Correlation выводит массив Mu+Mv−1 на N на P.
-
Когда входные сигналы и имеют размеры Mu на N и Mv на N, блок выводит матрицу Mu+Mv−1 на N.
Если один входной сигнал представляет вектор-столбец, а другой входной сигнал представляет многомерный массив, блок корреляции вычисляет взаимную корреляцию вектора с каждым столбцом в многомерном массиве. Например:
-
Когда вход представляет вектор-столбец Mu на 1, а — матрицу Mv на N, блок выводит матрицу Mu+Mv−1 на N.
-
Аналогично, когда и являются векторами столбцов с длинами Mu и Mv соответственно, блок выполняет векторную взаимную корреляцию.
Типы данных: Float64
Поддержка комплексных чисел: Да
Параметры
Main
Computation domain — область, в которой блок вычисляет автокорреляцию
Time (по умолчанию)
| Frequency
| Fastest
-
Time
— вычисляет взаимную корреляцию во временной области, что сводит к минимуму использование памяти. -
Frequency
— вычисляет взаимную корреляцию в частотной области. Дополнительные сведения см. в разделе Алгоритмы. -
Fastest
— вычисляет взаимную корреляцию с минимальным количеством вычислений.
Чтобы обрабатывать сигналы с фиксированной точкой, установите для этого параметра значение Time
.
Data Types
Rounding mode — режим округления
Floor (по умолчанию)
| Ceiling
| Convergent
| Nearest
| Round
| Simplest
| Zero
Выберите режим округления для операций с фиксированной точкой. Вы можете выбрать:
-
Floor
— округляет как положительные, так и отрицательные числа до отрицательной бесконечности. -
Ceiling
— округляет как положительные, так и отрицательные числа до положительной бесконечности. -
Convergent
— округляет число до ближайшего представимого значения. В случае, если дробная часть числа оканчивается на 5, число округляется до ближайшего четного целого числа. -
Nearest
— округляет число до ближайшего представимого значения. В случае, если дробная часть числа оканчивается на 5, число округляется до ближайшего четного целого числа. -
Round
— округляет число до ближайшего представимого значения. В случае, если дробная часть числа оканчивается на 5, положительные числа округляются до положительной бесконечности и отрицательные числа до отрицательной бесконечности. -
Simplest
— автоматически выбирает между округлениемFloor
и округлениемZero
, чтобы сгенерировать код округления, который является максимально эффективным. -
Zero
— округляет число к нулю.
Параметры блока всегда округляют до ближайшего представимого значения.
Настройки Rounding mode и Saturate on integer overflow не влияют на числовые результаты, если выполняются условия:
С этими настройками типа данных блок работает в режиме полной точности. |
Saturate on integer overflow — насыщение до целого при переполнении
выключено (по умолчанию)
| включено
Флажок, при установке которого используется арифметика насыщения для целых чисел и чисел с фиксированной точкой: при переполнении результат автоматически заменяется максимально возможным (по модулю) для типа данных значением.
Действие | Обоснование | Влияние на переполнение | Пример |
---|---|---|---|
Флажок Saturate on integer overflow установлен (включен). |
Для вашей модели возможно переполнение, и вы хотите, чтобы в сгенерированном коде была явная защита от переполнения. |
При переполнении результат автоматически заменяется максимально возможным (по модулю) для типа данных значением. |
Максимальное значение, которое может представлять тип данных Любой результат операции с блоком, превышающий это максимальное значение, приводит к переполнению 8-битного целого числа. При установленном флажке выходной сигнал блока насыщается до 127. Аналогично, выходной сигнал блока насыщается при минимальном выходном значении -128. |
Флажок Saturate on integer overflow не установлен (выключен). |
Вы хотите оптимизировать эффективность вашего сгенерированного кода. Вы хотите избежать чрезмерного определения того, как блок обрабатывает сигналы, находящиеся вне диапазона. |
Переполнения переносятся в соответствующее значение, которое может быть представлено типом данных. |
Максимальное значение, которое может представлять тип данных Любой результат операции с блоком, превышающий это максимальное значение, приводит к переполнению 8-битного целого числа. Если флажок снят, программное обеспечение интерпретирует значение, вызывающее переполнение, как |
Когда вы устанавливаете этот флажок, насыщение применяется ко всем внутренним операциям в блоке, а не только к входным/выходным данным или результату.
Параметр блока |
|
Значения |
|
По умолчанию |
|
Product output — тип выходных данных произведения
Inherit: Same as input (по умолчанию)
| fixdt([],16,0)
Укажите тип выходных данных произведения. Вы можете установить этот параметр в следующие значения:
-
Правило, которое наследует тип данных, например,
Inherit: Same as input
. -
Выражение, результатом которого является допустимый тип данных, например,
fixdt([],16,0)
.
Accumulator — тип данных аккумулятора
Inherit: Inherit via internal rule (по умолчанию)
| Inherit: Same as input
| fixdt([],16,0)
Accumulator задает тип данных вывода операции накопления в блоке. Вы можете установить этот параметр в следующие значения:
-
Inherit: Inherit via internal rule
— блок наследует тип выходных данных произведения на основе внутреннего правила. -
Inherit: Same as input
— блок задает тип данных аккумулятора, такой же как тип входных данных. -
fixdt(1,16,0)
— блок задает автознаковый, двоичный, масштабированный тип данных с фиксированной точкой с длиной слова 16 бит и дробной длиной 0.
Output data type — тип выходных данных
Float16
| Float32
| Float64
| Int8
| Int16
| Int32
| Int64
| Int128
| UInt8
| UInt16
| UInt32
| UInt64
| UInt128
| Inherit: auto
| Fixed point
Укажите тип выходных данных.
Тип может быть унаследован, указан напрямую или выражен как объект типа данных.
Параметр блока: |
|
Значение: |
|
По умолчанию: |
|
Output minimum — минимальное значение данных на выходе
[] (по умолчанию)
| скаляр
Минимальное значение данных на выходе, по умолчанию равно []
, что эквивалентно -Inf
.
Это число должно быть конечным действительным двойным скалярным значением.
Если в качестве типа данных для этого блока указан объект с типом шина, не задавайте минимальное значение для данных в этом блоке. Engee игнорирует эту настройку. Вместо этого задайте минимальные значения для элементов объекта, указанного в качестве типа данных. |
Engee использует это значение для выполнения:
-
Проверки диапазона моделирования.
-
Автоматического масштабирования типов данных с фиксированной точкой.
-
Оптимизации кода, который вы генерируете на основе модели. Эта оптимизация может удалить алгоритмический код и повлиять на результаты некоторых режимов моделирования.
Параметр не насыщает и не обрезает фактический выходной сигнал. Вместо этого используйте блок Saturation. |
Параметр блока |
|
Значения |
|
По умолчанию |
|
Output maximum — максимальное значение данных на выходе
[] (по умолчанию)
| скаляр
Максимальное значение данных на выходе, по умолчанию равно []
, что эквивалентно Inf
.
Это число должно быть конечным действительным двойным скалярным значением.
Если в качестве типа данных для этого блока указан объект с типом шина, не задавайте максимальное значение для данных в этом блоке. Engee игнорирует эту настройку. Вместо этого задайте максимальные значения для элементов объекта, указанного в качестве типа данных. |
Engee использует это значение для выполнения:
-
Проверки диапазона моделирования.
-
Автоматического масштабирования типов данных с фиксированной точкой.
-
Оптимизации кода, который вы генерируете на основе модели. Эта оптимизация может удалить алгоритмический код и повлиять на результаты некоторых режимов моделирования.
Параметр не насыщает и не обрезает фактический выходной сигнал. Вместо этого используйте блок Saturation. |
Параметр блока |
|
Значения |
|
По умолчанию |
|
Lock data type settings against changes by the fixed-point tools — заблокировать автоматическое масштабирование типов данных
выключено (по умолчанию)
| включено
Флажок, при установке которого блокируется автоматическое масштабирование типов данных с фиксированной точкой.
Параметр блока |
|
Значения |
|
По умолчанию |
|
Подробнее
Взаимнокорреляционная функция
Взаимнокорреляционная функция — мера сходства двух последовательностей с дискретным временем в зависимости от запаздывания одной относительно другой.
Для двух детерминированных входных данных длиной N или реализаций совместно стационарных случайных процессов широкого диапазона (WSS), и , взаимная корреляция вычисляется с использованием следующего соотношения:
где:
-
— задержка
-
— комплексное сопряжение.
Если входные данные являются реализациями совместно используемых стационарных случайных процессов, является ненормированной оценкой теоретической взаимной корреляции:
,
где:
-
— оператор математического ожидания.
Алгоритмы
Вычисления во временной области
Когда вы устанавливаете для области вычислений значение Time
, алгоритм вычисляет взаимную корреляцию двух сигналов во временной области. Входные сигналы могут быть сигналами с фиксированной точкой в этой области.
Корреляция двух двумерных массивов
Когда входными данными являются два двумерных массива, -й столбец выходных данных, , содержит эти элементы:
где:
-
— комплексное сопряжение.
-
— входная матрица Mu на N.
-
— входная матрица Mv на N.
-
— матрица Mu+Mv−1 на N.
Входные данные и равны нулю, если они проиндексированы вне их допустимых диапазонов.
Корреляция вектора-столбца с двумерным массивом
Когда один входной сигнал представляет вектор-столбец, а другой входной сигнал представляет двумерный массив, алгоритм независимо перекрестно коррелирует входной вектор с каждым столбцом двумерного массива. -й столбец выходных данных, содержит эти элементы:
где:
-
— комплексное сопряжение.
-
— входная матрица Mu на 1.
-
— входная матрица Mv на N.
-
— матрица Mu+Mv−1 на N.
Входные данные и равны нулю, если они проиндексированы вне их допустимых диапазонов.
Корреляция двух векторов-столбцов
Когда входные данные представляют собой два вектора-столбца, -й столбец выходных данных, , содержит эти элементы:
где:
-
— комплексное сопряжение.
-
— входная матрица Mu на 1.
-
— входная матрица Mv на 1.
-
— матрица Mu+Mv−1 на 1.
Входные данные и равны нулю, если они проиндексированы вне их допустимых диапазонов.
Вычисления в частотной области
Когда вы устанавливаете для области вычислений значение frequency
, алгоритм вычисляет взаимную корреляцию в частотной области.
Чтобы вычислить взаимную корреляцию, алгоритм:
-
Принимает преобразование Фурье обоих входных сигналов, и .
-
Перемножает и , где — комплексное сопряжение.
-
Вычисляет обратное преобразование Фурье для произведения.
В этой области, в зависимости от длины входных данных, алгоритм может потребовать меньшего количества вычислений.