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

Array-Vector Add

Прибавляет элементы вектора к элементам массива по указанному измерению.

array vector add

Системный объект: ArrayVectorAdd()

Описание

Блок Array-Vector Add прибавляет значения входного вектора V к значениям n-мерного входного массива A в заданном измерении.

Длина входа V должна быть такой же, как длина заданного измерения A. Блок Array-Vector Add добавляет каждый элемент V к соответствующему элементу A.

Рассмотрим трехмерный входной массив A (i, j, k) размером M на N на P и входной вектор V размером N на 1. Если для параметра Add along dimension установлено значение 2, то выход блока Y(i,j,k):

,

где:

.

.

.

Выход блока Array-Vector Add имеет тот же размер, что и входной массив A. Этот блок поддерживает действительные и комплексные входные значения.

Порты

Вход

A — входной массив
вектор | матрица

Входной массив; вектор или матрица.

Типы данных: Float64

V — входной вектор
вектор | матрица

Входной вектор.

Зависимости

Используется, если для параметра Vector (V) source установлено значение Input port.

Типы данных: Float64

Выход

Port_1 — выходной массив
вектор | матрица

Выход блока; вектор или матрица.

Типы данных: Float64

Параметры

Add along dimension — размерность для суммирования
1 (по умолчанию) | положительное число

Задает размерность, по которой входной массив A будет суммирован с элементами вектора V.

Типы данных: Float64

Vector (V) source — источник вектора
Input port (по умолчанию) | Dialog parameter

Задайте источник вектора V.

  • Input port — вектор берется из входного порта.

  • Dialog parameter — вектор берется из диалогового параметра Vector (V) .

Vector (V) — вектор
[0.5 0.25] (по умолчанию) | вектор

Задайте вектор, V.

Зависимости

Этот параметр используется только при выборе значения Dialog parameter для параметра Vector (V) source.

Типы данных: Float64

Системный объект ArrayVectorAdd()

Функция ArrayVectorAdd() дублирует работу блока Array-Vector Add и суммирует два входящих сигнала, подающихся на вход.

Параметры системного объекта ArrayVectorAdd (Add along dimension, Vector (V) source, Vector (V)) соответствуют параметрам блока.

В зависимости от значения параметра Vector (V) source возможны два варианта вызова конструктора и функции step().

Конструктор 1

Используйте данный конструктор для работы с двумя входными сигналами. В этом случае функция step() принимает два аргумента: они соответствуют портам A и V блока.

import ComponentBase.CausalInterface: step!, setup!, release!, reset!
import CausalDSP.MathFunction: ArrayVectorAdd
c = ArrayVectorAd (Add along dimension::Int, "Input port")
step!(c, [1. 2. 3.; 1. 2. 3.; 1. 2. 3.], [1.0, 2.0, 3.0])

Зависимости

Для работы данного конструктора установите для параметра Vector (V) source значение Input port.

Конструктор 2

Используйте данный конструктор для работы с одним входным сигналом.

В этом случае функция step() принимает один аргумент: он соответствует порту A блока.

import ComponentBase.CausalInterface: step!, setup!, release!, reset!
import CausalDSP.MathFunction: ArrayVectorAdd
c = ArrayVectorAdd(Add along dimension::Int, "Dialog parameter", Vector (V)::Float64)`
step!(c, [1. 2. 3.; 1. 2. 3.; 1. 2. 3.]

Зависимости

Для работы данного конструктора установите для параметра Vector (V) source значение Dialog parameter. При этом значение вектора V записывается в параметр Vector (V).

Пример использования системного объекта

Для вызова ArrayVectorAdd() выполните в командной строке Engee следующий код:

import ComponentBase.CausalInterface: step!, setup!, release!, reset!  # Вызов методов интерфейса
import CausalDSP.MathFunction: ArrayVectorDivide # Вызов системного объекта из библиотеки
c = ArrayVectorAdd(1, "Input port") # Задание параметров системного объекта
step!(c, [1. 2. 3.; 1. 2. 3.; 1. 2. 3.], [1.0, 2.0, 3.0]) # Выполнение первого шага симуляции

Результат выполнения:

Конструктор 1

engee> import CausalDSP.MathFunction: ArrayVectorAdd
engee> c = ArrayVectorAdd(1, "Input port")
ArrayVectorAdd: AddAlongDimension=1 VectorSource=Input port Vector=[0]
engee> step!(c, [1. 2. 3.; 1. 2. 3.; 1. 2. 3.])
3×3 Matrix{Float64}:
0.0  0.0  0.0
0.0  0.0  0.0
0.0  0.0  0.0
engee> import ComponentBase.CausalInterface: step!, setup!, release!, reset!
engee> import CausalDSP.MathFunction: ArrayVectorAdd
engee> c = ArrayVectorAdd(1, "Input port")
ArrayVectorAdd: AddAlongDimension=1 VectorSource=Input port Vector=[0]
engee> step!(c, [1. 2. 3.; 1. 2. 3.; 1. 2. 3.], [1.0, 2.0, 3.0])
3×3 Matrix{Float64}:
2.0  3.0  4.0
3.0  4.0  5.0
4.0  5.0  6.0

Конструктор 2

engee> import ComponentBase.CausalInterface: step!, setup!, release!, reset!
engee> import CausalDSP.MathFunction: ArrayVectorAdd
engee> c = ArrayVectorAdd(1, "Dialog parameter",[1.0, 2.0, 3.0])
ArrayVectorAdd:
AddAlongDimension=1
VectorSource=Dialog parameter
Vector=[1.0, 2.0, 3.0]
engee> step!(c, [1. 2. 3.; 1. 2. 3.; 1. 2. 3.])
3×3 Matrix{Float64}:
2.0  3.0  4.0
3.0  4.0  5.0
4.0  5.0  6.0