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

Работа с сигналами разных размерностей

Страница в процессе разработки.

Векторизация и broadcast являются важными приемами при работе с моделями в Engee, позволяющими эффективно обрабатывать сигналы разных размерностей. Используя векторизацию, можно выполнять вычисления над массивами целиком, избегая явных циклов по элементам, что ускоряет вычисления и упрощает код. Broadcast, в свою очередь, обеспечивает автоматическое согласование размерностей между массивами при выполнении операций, позволяя удобно работать с данными разных форматов.

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

Векторизация в моделировании

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

Например, если задать параметру Amplitude блока Sine Wave матрицу значений [[1, 2]; [3, 4]], то это будет означать, что блок генерирует несколько сигналов с амплитудами, указанными в матрице. На изображении ниже видно, как блок Sine Wave с заданной амплитудой формирует несколько сигналов, что позволяет сразу увидеть результат для разных значений параметра Amplitude:

vectorization x 1

Broadcast

Broadcast позволяет согласовывать размерности массивов для выполнения операций над ними. В Engee этот механизм автоматически расширяет размерности массивов, позволяя выполнять операции с несовместимыми на первый взгляд массивами. Например, если один массив имеет размер 2x2, а другой — 1x2, то при сложении массивы будут приведены к совместимым размерностям.

Рассмотрим пример с двумя блоками Constant и одним блоком Add. Блок Constant с параметром [3, 4; 5, 6] добавляется к блоку Constant с параметром [2, 3]. При этом broadcast автоматически приводит массивы к совместимым размерам и выполняет поэлементное сложение:

broadcast 1

broadcast 2

Результат на выходе блока будет равен [5, 7; 7, 9], так как строки были автоматически согласованы. Этот подход позволяет легко выполнять операции между массивами разных размеров и значительно упрощает работу с многомерными сигналами в моделировании.