====== Array and Matrix Functions ======
==== Arrays ====
=== Vector ===
**Vector**(a,b, etc)
creates a vector of the number of components specified
! Create a metric signal with 2 components and one frame
Metric_Explicit
! /RESULT_METRIC_FOLDER=PROCESSED
/RESULT_METRIC_NAME=VEC2
/METRIC_VALUE=2+3
;
! Create a vector containing a constant, a two dimensional metric and a 3 dimensional model based signal.
Evaluate_Expression
/EXPRESSION=vector (1, METRIC::PROCESSED::VEC2, LINK_MODEL_BASED::ORIGINAL::RKNEE_ANGLE)
! /SIGNAL_TYPES=
! /SIGNAL_FOLDER=ORIGINAL
! /SIGNAL_NAMES=
! /RESULT_TYPES=DERIVED
! /RESULT_FOLDERS=PROCESSED
/RESULT_NAME=TEST
! /APPLY_AS_SUFFIX_TO_SIGNAL_NAME=FALSE
;
The resulting signal will have the first three columns (one for the constant, one for the vector of 2 components) buffered to the number of frames of RKNEE_ANGLE by replicating the first frame.
=== List ===
**list(a,b,etc)** -- creates a list (column vector) of the number of rows specified:
=== Unit_Vector ===
**unit_vector (a, b, etc)** -- creates a unit vector of the number of components specified:
==== Rotation Matrices ====
=== Rotation Multiply ===
**Rotation_Multiply**(a,b)
Example: Multiply two ROTATION signals
Evaluate_Expression*
/EXPRESSION=ROTATION_MULTIPLY(ROTATION_INVERSE(ROTATION::ORIGINAL::PELVIS_SHIFTED_4x4),CURRENT_SIGNAL)
/SIGNAL_TYPES=ROTATION
! /SIGNAL_FOLDER=ORIGINAL
! /SIGNAL_NAMES=
/RESULT_TYPES=ROTATION
! /RESULT_FOLDERS=PROCESSED
/RESULT_NAME=_MULT
/APPLY_AS_SUFFIX_TO_SIGNAL_NAME=TRUE
;
=== Rotation Inverse ===
**Rotation_Inverse**(a)
Example: Inverse of a 4x4 ROTATION signal or a 3x3 LINK_MODEL_BASED ROTATION
A good description of the inverse of a ROTATION signals can be found [[[http://www.info.hiroshima-cu.ac.jp/~miyazaki/knowledge/teche0053.html|here]]]
Evaluate_Expression
/EXPRESSION=ROTATION_INVERSE(ROTATION::ORIGINAL::PELVIS_SHIFTED_4x4)
/SIGNAL_TYPES=ROTATION
! /SIGNAL_FOLDER=ORIGINAL
! /SIGNAL_NAMES=
/RESULT_TYPES=ROTATION
! /RESULT_FOLDERS=PROCESSED
/RESULT_NAME=_INV
/APPLY_AS_SUFFIX_TO_SIGNAL_NAME=TRUE
;
=== Rotation Transpose ===
**Rotation_Transpose**(a)
Example: Transpose of a 3x3 LINK_MODEL_BASED ROTATION signal
Evaluate_Expression
/EXPRESSION=ROTATION_TRANSPOSE(ROTATION::ORIGINAL::PELVIS_SHIFTED_4x4)
/SIGNAL_TYPES=ROTATION
! /SIGNAL_FOLDER=ORIGINAL
! /SIGNAL_NAMES=
/RESULT_TYPES=ROTATION
! /RESULT_FOLDERS=PROCESSED
/RESULT_NAME=_T
/APPLY_AS_SUFFIX_TO_SIGNAL_NAME=TRUE
;
=== Pose_4x4 ===
This was created for the Shadow segments introduced in 2024.
Create a 4x4 Rotation from the Visual3D pose of a segment, with the translation of the origin represented in any coordinate system, and the orientation defined by Euler angles and the Euler sequence.
POSE_4X4(R_HEEL,0,0,0,123)