c - 在 C 中使用转置的矩阵乘法

标签 c matrix

我是 C 的初学者。 我试图编写一些代码来使用转置执行矩阵乘法。 有什么方法可以在执行时间方面改进代码?

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <assert.h>
#include <time.h>

int main()
{   

  int a[3][3] = {{1,0, 1}, {2, 2, 4},{1, 2, 3}};

        int b[3][3] ={ { 2, 3, 1}, { 6, 6, 2 }, { 9, 9, 0 } };
        int result[3][3];
        double tmp;
        int i,j,k;
        for (i=0; i<3; i++) //i = col
          {
            for (k=0; k<3; k++)
            {
              tmp = a[i][k];
              for (j=0; j<3; j++) //j = row
              {
                result[i][j] += tmp * b[k][j];
                printf("%d\t",result[i][j]);
              }
            }
          }
}

最佳答案

如果您的矩阵是int,您真的不应该使用double 作为临时矩阵。无目的地将整数转换为 float 并再次返回是非常浪费的,它可能会花费很多。

关于c - 在 C 中使用转置的矩阵乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12795143/

相关文章:

algorithm - 如何处理整数矩阵以求 O(1) 中任意子矩形元素的平均值?

r - 如何在 R 中快速组合 60 个矩阵

svg - 缩放和镜像 SVG 对象

c - 本身具有依赖性的静态库上的 AC_SEARCH_LIBS?

c - 有没有 Readline 的简单替代品?

c - C 编程中可变数量的参数

python - 将项目数据转化为关系矩阵

python - 如何从矩阵中找到线性独立的行

C - 文件管理,无法获得想要的输出

c - 在 C 中采用 long 值并以相反顺序返回其字节的函数