Документация Engee

Correlation

Взаимнокорреляционная функция двух входных данных.

correlation

Описание

Блок Correlation вычисляет взаимнокорреляционную функцию двух входных массивов размерности N вдоль первого измерения. Вычисление может быть выполнено во временной или частотной области. Вы можете указать область с помощью параметра Computation domain.

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

В частотной области для вычисления взаимной корреляции блок:

  1. Выполняет преобразование Фурье обоих входных сигналов, и .

  2. Перемножает и , где — комплексное сопряжение.

  3. Вычисляет обратное преобразование Фурье для произведения.

Если вы задаете для 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 не влияют на числовые результаты, если выполняются условия:

  • Для параметра Product output установлено значение Inherit: Inherit via internal rule.

  • Для параметра Accumulator установлено значение Inherit: Inherit via internal rule.

  • Для параметра Output установлено значение Inherit: Same as accumulator.

С этими настройками типа данных блок работает в режиме полной точности.

Saturate on integer overflow — насыщение до целого при переполнении
выключено (по умолчанию) | включено

Флажок, при установке которого используется арифметика насыщения для целых чисел и чисел с фиксированной точкой: при переполнении результат автоматически заменяется максимально возможным (по модулю) для типа данных значением.

Действие Обоснование Влияние на переполнение Пример

Флажок Saturate on integer overflow установлен (включен).

Для вашей модели возможно переполнение, и вы хотите, чтобы в сгенерированном коде была явная защита от переполнения.

При переполнении результат автоматически заменяется максимально возможным (по модулю) для типа данных значением.

Максимальное значение, которое может представлять тип данных Int8 (знаковое, 8-битное целое), равно 127.

Любой результат операции с блоком, превышающий это максимальное значение, приводит к переполнению 8-битного целого числа. При установленном флажке выходной сигнал блока насыщается до 127. Аналогично, выходной сигнал блока насыщается при минимальном выходном значении -128.

Флажок Saturate on integer overflow не установлен (выключен).

Вы хотите оптимизировать эффективность вашего сгенерированного кода.

Вы хотите избежать чрезмерного определения того, как блок обрабатывает сигналы, находящиеся вне диапазона.

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

Максимальное значение, которое может представлять тип данных Int8 (знаковое, 8-битное целое), равно 127.

Любой результат операции с блоком, превышающий это максимальное значение, приводит к переполнению 8-битного целого числа. Если флажок снят, программное обеспечение интерпретирует значение, вызывающее переполнение, как Int8, что может привести к непреднамеренному результату. Например, результат блока 130 (двоичный код 1000 0010), выраженный как Int8, равен -126.

Когда вы устанавливаете этот флажок, насыщение применяется ко всем внутренним операциям в блоке, а не только к входным/выходным данным или результату.

Когда тип входных данных блока является типом с плавающей точкой, блок игнорирует этот параметр.

Программное использование

Параметр блока

SaturateOnIntegerOverflow

Значения

выключено | включено

По умолчанию

выключено

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

Укажите тип выходных данных.

Тип может быть унаследован, указан напрямую или выражен как объект типа данных.

Программное использование

Параметр блока:

OutDataTypeStr

Значение:

Float16 | Float32 | Float64 | Int8 | Int16 | Int32 | Int64 | Int128 | UInt8 | UInt16 | UInt32 | UInt64 | UInt128 | Fixed

По умолчанию:

Float64

Output minimum — минимальное значение данных на выходе
[] (по умолчанию) | скаляр

Минимальное значение данных на выходе, по умолчанию равно [], что эквивалентно -Inf.

Это число должно быть конечным действительным двойным скалярным значением.

Если в качестве типа данных для этого блока указан объект с типом шина, не задавайте минимальное значение для данных в этом блоке. Engee игнорирует эту настройку. Вместо этого задайте минимальные значения для элементов объекта, указанного в качестве типа данных.

Engee использует это значение для выполнения:

  • Проверки диапазона моделирования.

  • Автоматического масштабирования типов данных с фиксированной точкой.

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

Параметр не насыщает и не обрезает фактический выходной сигнал. Вместо этого используйте блок Saturation.

Программное использование

Параметр блока

OutMin

Значения

[ ] | скаляр

По умолчанию

[ ]

Output maximum — максимальное значение данных на выходе
[] (по умолчанию) | скаляр

Максимальное значение данных на выходе, по умолчанию равно [], что эквивалентно Inf.

Это число должно быть конечным действительным двойным скалярным значением.

Если в качестве типа данных для этого блока указан объект с типом шина, не задавайте максимальное значение для данных в этом блоке. Engee игнорирует эту настройку. Вместо этого задайте максимальные значения для элементов объекта, указанного в качестве типа данных.

Engee использует это значение для выполнения:

  • Проверки диапазона моделирования.

  • Автоматического масштабирования типов данных с фиксированной точкой.

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

Параметр не насыщает и не обрезает фактический выходной сигнал. Вместо этого используйте блок Saturation.

Программное использование

Параметр блока

OutMax

Значения

[ ] | скаляр

По умолчанию

[ ]

Lock data type settings against changes by the fixed-point tools — заблокировать автоматическое масштабирование типов данных
выключено (по умолчанию) | включено

Флажок, при установке которого блокируется автоматическое масштабирование типов данных с фиксированной точкой.

Программное использование

Параметр блока

LockScale

Значения

выключено | включено

По умолчанию

выключено

Подробнее

Взаимнокорреляционная функция

Взаимнокорреляционная функция — мера сходства двух последовательностей с дискретным временем в зависимости от запаздывания одной относительно другой.

Для двух детерминированных входных данных длиной 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, алгоритм вычисляет взаимную корреляцию в частотной области.

Чтобы вычислить взаимную корреляцию, алгоритм:

  • Принимает преобразование Фурье обоих входных сигналов, и .

  • Перемножает и , где — комплексное сопряжение.

  • Вычисляет обратное преобразование Фурье для произведения.

В этой области, в зависимости от длины входных данных, алгоритм может потребовать меньшего количества вычислений.