OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3668|回复: 0

使用arm_mat_mult_f32矩阵相乘结果错误

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2018-11-17
在线时间
1 小时
发表于 2018-11-17 13:01:21 | 显示全部楼层 |阅读模式
4金钱
请问大家,我使用arm_mat_mult_f32计算矩阵相乘为什么结果出错了?
函数如下:
static void DSP_MatMult(void)
{
uint8_t i;
/****浮点数数组******************************************************************/
float32_t pDataA[6] = {1.1f, 1.1f, 2.1f, 2.1f, 3.1f, 3.1f};
float32_t pDataB[6] = {1.1f, 1.1f, 2.1f, 2.1f, 3.1f, 3.1f};
float32_t pDataDst[9];
arm_matrix_instance_f32 pSrcA; //3行3列数据
arm_matrix_instance_f32 pSrcB; //3行3列数据
arm_matrix_instance_f32 pDst;

/****浮点数***********************************************************************/
pSrcA.numCols =3;
pSrcA.numRows = 1;
pSrcA.pData = pDataA;
pSrcB.numCols = 1;
pSrcB.numRows = 3;
pSrcB.pData = pDataB;
pDst.numCols = 3;
pDst.numRows = 3;
pDst.pData = pDataDst;
printf("****浮点数1******************************************\r\n");
arm_mat_mult_f32(&pSrcA, &pSrcB, &pDst);
for(i = 0; i < 9; i++)
{
printf("pDataDst[%d] = %f\r\n", i, pDataDst[i]);
}
pSrcA.numCols = 2;
pSrcA.numRows = 2;
pSrcA.pData = pDataA;
pSrcB.numCols = 2;
pSrcB.numRows = 2;
pSrcB.pData = pDataB;
pDst.numCols = 2;
pDst.numRows = 2;
pDst.pData = pDataDst;
printf("****浮点数1******************************************\r\n");
arm_mat_mult_f32(&pSrcA, &pSrcB, &pDst);
for(i = 0; i < 4; i++)
{
printf("pDataDst[%d] = %f\r\n", i, pDataDst[i]);
}
}

计算3*1矩阵和1*3矩阵相乘出错,但是,计算2*2矩阵和2*2矩阵相乘就没有错
结果如下:
初始化完成,进入主循环!
****浮点数1******************************************
pDataDst[0] = 0.000000
pDataDst[1] = 0.000000
pDataDst[2] = 147573952589676420000.000000
pDataDst[3] = 0.000000
pDataDst[4] = 0.000000
pDataDst[5] = 0.000000
pDataDst[6] = 0.000000
pDataDst[7] = 0.000000
pDataDst[8] = 0.000000
****浮点数1******************************************
pDataDst[0] = 3.520000
pDataDst[1] = 3.520000
pDataDst[2] = 6.719999
pDataDst[3] = 6.719999

这是为什么呢?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 18:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表