CMSIS-DSP Matrix Functions
This module provides optimized matrix operations. Matrix instances are designed to be static-allocated with compile-time known dimensions. Zero heap allocation is used.
Types
Matrix[Rows; Cols] = object instance*: MatrixInstanceF32 data*: array[Rows * Cols, float32_t]
- A compile-time sized Matrix. Source Edit
MatrixInstanceF32 {.importcpp: "arm_matrix_instance_f32", header: "arm_math.h".} = object numRows*: uint16 numCols*: uint16 pData*: ptr float32_t
- Source Edit
Procs
proc arm_mat_add_f32(pSrcA: ptr MatrixInstanceF32; pSrcB: ptr MatrixInstanceF32; pDst: ptr MatrixInstanceF32): ArmStatus {.importc, header: "arm_math.h", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc arm_mat_init_f32(S: ptr MatrixInstanceF32; nRows: uint16; nCols: uint16; pData: ptr float32_t) {.importc, header: "arm_math.h", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc arm_mat_inverse_f32(pSrc: ptr MatrixInstanceF32; pDst: ptr MatrixInstanceF32): ArmStatus {.importc, header: "arm_math.h", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc arm_mat_mult_f32(pSrcA: ptr MatrixInstanceF32; pSrcB: ptr MatrixInstanceF32; pDst: ptr MatrixInstanceF32): ArmStatus {. importc, header: "arm_math.h", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc arm_mat_sub_f32(pSrcA: ptr MatrixInstanceF32; pSrcB: ptr MatrixInstanceF32; pDst: ptr MatrixInstanceF32): ArmStatus {.importc, header: "arm_math.h", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc arm_mat_trans_f32(pSrc: ptr MatrixInstanceF32; pDst: ptr MatrixInstanceF32): ArmStatus {. importc, header: "arm_math.h", ...raises: [], tags: [], forbids: [].}
- Source Edit
proc inverse[N: static int](dst: var Matrix[N, N]; src: Matrix[N, N]): ArmStatus {. inline.}
-
Compute matrix inverse: dst = src^(-1)
Returns: ArmStatus indicating success or error
- ARM_MATH_SUCCESS: Operation completed successfully
- ARM_MATH_SINGULAR: Matrix is singular and cannot be inverted
proc mult[R1, C1, C2: static int](dst: var Matrix[R1, C2]; a: Matrix[R1, C1]; b: Matrix[C1, C2]): ArmStatus {.inline.}
-
Multiply two matrices: dst = a * b
Returns: ArmStatus indicating success or error
- ARM_MATH_SUCCESS: Operation completed successfully
- ARM_MATH_SIZE_MISMATCH: Dimension mismatch