第19章 MatrixFunctions的使用(一) 本期教程主要讲解矩阵运算中的初始化,加法,逆矩阵和减法。 19.1 矩阵初始化MatInit 19.2 矩阵加法MatAdd 19.3 逆矩阵MatInverse 19.4 矩阵减法MatSub 19.5 总结 19.1 矩阵初始化MatInit
19.1.1 arm_mat_init_f32函数定义如下: void arm_mat_init_f32( arm_matrix_instance_f32 * S, uint16_t nRows, uint16_t nColumns, float32_t * pData) 参数定义: [in,out] *S pointsto an instance of the floating-point matrix structure. [in] nRows number of rows in the matrix. [in] nColumns number of columns in thematrix. [in] *pData points to the matrix data array. 注意事项: 1. arm_matrix_instance_f32的结构体定义如下(在文件arm_math.h文件里面): typedefstruct { uint16_t numRows; // number of rows of the matrix. uint16_t numCols; //number of columns of the matrix. float32_t *pData; // points to the data of the matrix. } arm_matrix_instance_f32;
19.1.2 arm_mat_init_q31函数定义如下: void arm_mat_init_q31( arm_matrix_instance_q31 * S, uint16_t nRows, uint16_t nColumns, q31_t * pData) 参数定义: [in,out] *S pointsto an instance of the floating-point matrix structure. [in] nRows number of rows in the matrix. [in] nColumns number of columns in thematrix. [in] *pData points to the matrix data array. 注意事项: 1. arm_matrix_instance_q31的结构体定义如下(在文件arm_math.h文件里面): typedefstruct { uint16_t numRows; // number of rows of the matrix. uint16_t numCols; //number of columns of the matrix. q31_t *pData; //points to the data of the matrix. } arm_matrix_instance_q31;
19.1.3 arm_mat_init_q15函数定义如下: void arm_mat_init_q15( arm_matrix_instance_q15 * S, uint16_t nRows, uint16_t nColumns, q15_t * pData) 参数定义: [in,out] *S pointsto an instance of the floating-point matrix structure. [in] nRows number of rows in the matrix. [in] nColumns number of columns in thematrix. [in] *pData points to the matrix data array. 注意事项: 1. arm_matrix_instance_q15的结构体定义如下(在文件arm_math.h文件里面): typedefstruct { uint16_t numRows; // number of rows of the matrix. uint16_t numCols; //number of columns of the matrix. q15_t *pData; //points to the data of the matrix. } arm_matrix_instance_q15;
19.1.4 实例讲解实验目的: 1. 学习MatrixFunctions中矩阵的初始化 实验内容: 1. 按下按键K1, 串口打印函数DSP_MatInit的输出结果 实验现象: 通过窗口上位机软件SecureCRT(V5光盘里面有此软件)查看打印信息现象如下:
程序设计:
- /*
- *********************************************************************************************************
- * 函 数 名: DSP_MatInit
- * 功能说明: 矩阵数据初始化
- * 形 参:无
- * 返 回 值: 无
- *********************************************************************************************************
- */
- static void DSP_MatInit(void)
- {
- uint8_t i;
-
- /****浮点数数组******************************************************************/
- float32_t pDataA[9] = {1.1f, 1.1f, 2.1f, 2.1f, 3.1f, 3.1f, 4.1f, 4.1f, 5.1f};
-
- arm_matrix_instance_f32 pSrcA; //3行3列数据
- arm_matrix_instance_f32 pDst;
-
- /****定点数Q31数组******************************************************************/
- q31_t pDataA1[9] = {1, 1, 2, 2, 3, 3, 4, 4, 5};
-
- arm_matrix_instance_q31 pSrcA1; //3行3列数据
- arm_matrix_instance_q31 pDst1;
-
- /****定点数Q15数组******************************************************************/
- q15_t pDataA2[9] = {1, 1, 2, 2, 3, 3, 4, 4, 5};
-
- arm_matrix_instance_q15 pSrcA2; //3行3列数据
- arm_matrix_instance_q15 pDst2;
-
- /****浮点数***********************************************************************/
- printf("****浮点数******************************************rn");
- arm_mat_init_f32(&pSrcA, 3,3, pDataA);
- for(i = 0; i < 9; i++)
- {
- printf("pDataA[%d] = %frn", i, pDataA[i]);
- }
-
- /****定点数Q31***********************************************************************/
- printf("****浮点数******************************************rn");
- arm_mat_init_q31(&pSrcA1, 3,3, pDataA1);
- for(i = 0; i < 9; i++)
- {
- printf("pDataA1[%d] = %drn", i, pDataA1[i]);
- }
-
- /****定点数Q15***********************************************************************/
- printf("****浮点数******************************************rn");
- arm_mat_init_q15(&pSrcA2, 3,3, pDataA2);
- for(i = 0; i < 9; i++)
- {
- printf("pDataA2[%d] = %drn", i, pDataA2[i]);
- }
-
- }
复制代码
|