900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > C语言实现任意复数矩阵相乘

C语言实现任意复数矩阵相乘

时间:2021-03-16 21:23:00

相关推荐

C语言实现任意复数矩阵相乘

这里借鉴了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计算结果如下:

两者结果一致。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。