首页 > 编程知识 正文

C语言实现矩阵乘法,c语言实现两个矩阵相乘

时间:2023-05-05 19:10:29 阅读:275751 作者:1325

这里借鉴了TI官方的dsp函数库中的矩阵处理函数

void mat_mul_cplx(const float *x1, int r1, int c1, const float *x2,int c2, float *y){float real, imag;int i, j, k;for (i = 0; i < r1; i++)for (j = 0; j < c2; j++){real = 0;imag = 0;for (k = 0; k < c1; k++){real += (x1[i * 2 * c1 + 2 * k] * x2[k * 2 * c2 + 2 * j]- x1[i * 2 * c1 + 2 * k + 1] * x2[k * 2 * c2 + 2 * j + 1]);imag += (x1[i * 2 * c1 + 2 * k] * x2[k * 2 * c2 + 2 * j + 1]+ x1[i * 2 * c1 + 2 * k + 1] * x2[k * 2 * c2 + 2 * j]);}y[i * 2 * c2 + 2 * j] = real;y[i * 2 * c2 + 2 * j + 1] = imag;}}

测试程序如下(矩阵A为3*1阶 矩阵B为1*3阶):

int main(){int i;float A[6] = {1.2,2.1,3.0,4.2,5.0,6.0};float B[6] = {1.2,2.1, 3.0,4.2,5.0,6.0 };float C[18];mat_mul_cplx(A, 3, 1, B, 3, C);for (i = 0; i < 18; i++){cout << C[i]<<endl;}}

结果如下:

matlab计算结果如下:

两者结果一致。 

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。