matrix - 在 C 中优化矩阵计算

标签 matrix

我正在尝试找到将矩阵与其转置相乘的最有效方法。关于最有效的数学公式有什么想法吗?

最佳答案

您可以通过在同一个 for 循环中初始化 AB 矩阵来改进您的第一个解决方案。

n * k也是计算了两次,你可以把它存储到一个变量中以节省一些时间。

最好使用 B[i + n * j] += ... 而不是 B[i + n * j] = B[i + n * j] + ...,因为在第一个中,B[i + n * j] 被读取了一次,而在第二个中,它被读取了两次。

void print_unmodified()
{
    unsigned int n = 64u;
    unsigned int A[N_MAX];
    unsigned int B[N_MAX];

    /* Initializing the A and B matrix with values 1->64^2 */
    for (int i = 0; i < (n * n); i++)
    {
        A[i] = i + 1;
        B[i] = 0u;
    }

    /* Matrix Multiplication B = A*A' */
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            int index = i + n*j;
            for (int k = 0; k < n; k++)
            {
                int p = n * k;
                B[index] += A[i + p] * A[j + p];
            }
        }
    }
}

关于matrix - 在 C 中优化矩阵计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56373772/

相关文章:

r - 矩阵和向量形式的数据点数量

c - 如何输入矩阵的边界?

matlab - 在 Matlab 中以数值方式查找广义特征向量

r - 如何使用 R 计算 Tanimoto/Jacquard Score 作为距离矩阵

c++ - 如何使用线性代数的C++模板库Eigen?

perl - 在perl中随机化矩阵,保持行和列的总数相同

python - 如何创建频率矩阵?

python - 多个向量对的 Numpy 和点积 : how can it be done?

r - 根据不同位数对矩阵的行进行排序

python - 距离矩阵 FLoyd Warshall Python