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. Этот блок поддерживает действительные и комплексные входные значения.
Порты
Параметры
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