CSI-DSP  Version 1.0.0
CSI DSP Software Library
Content
矩阵函数

Content

 矩阵加法
 
 复数矩阵乘法
 
 矩阵初始化
 
 矩阵求逆
 
 矩阵乘法
 
 矩阵缩放
 
 矩阵减法
 
 矩阵转置
 

简要说明

这组函数提供了基本的矩阵操作。 函数以矩阵数据结构为操作描述矩阵。比如, 浮点矩阵数据结构体的类型定义如下:

    typedef struct
    {
      uint16_t numRows;     // 矩阵的行数
      uint16_t numCols;     // 矩阵的列数
      float32_t *pData;     // 指向矩阵的数据
    } csky_matrix_instance_f32;

Q15和Q31矩阵的数据类型也类似。

矩阵结构体指定了矩阵的大小,也指定了矩阵的数据数组。数组的大小是 numRows X numCols ,数据按行顺序排列。就是说,矩阵的元素 (i, j) 保存在:

    pData[i*numCols + j]
初始化函数
每种矩阵数据结构体类型都有一个相应的初始化函数。 初始化函数设置数据结构内部的数值。 函数 csky_mat_init_f32(), csky_mat_init_q31()csky_mat_init_q15() 分别对应浮点,Q31和Q15类型。
是否使用初始化函数是可选的。 但是如果使用了初始化函数,则结构体实例不能放在常量数据段。 想要将结构体实例放在常量数据段,则需要手动初始化数据结构。比如:
csky_matrix_instance_f32 S = {nRows, nColumns, pData};
csky_matrix_instance_q31 S = {nRows, nColumns, pData};
csky_matrix_instance_q15 S = {nRows, nColumns, pData};
其中 nRows 指定行数, nColumns 指定列数, pData 指向数据数组。
大小检查
所有的矩阵函数默认检查输入输出矩阵的大小。 比如,矩阵加法会确认两个输入矩阵和输出矩阵的行数和列数相等。 如果函数的大小检查失败,则返回:
    CSKY_MATH_SIZE_MISMATCH
否则,函数返回
    CSKY_MATH_SUCCESS
矩阵检查会有一些开销。 使能矩阵检查,通过在库工程设定里面定义 #define
    CSKY_MATH_MATRIX_CHECK
这个宏默认存在定义,大小检查默认使能。 改变工程设定,不定义这个宏,禁止大小检查会让函数执行的快一点。 禁止大小检查的话,函数总是返回 CSKY_MATH_SUCCESS.