遍历C中具有相同向量的矩阵

时间:2018-10-23 13:23:07

标签: c for-loop matrix vector

我有两个矩阵,它们的行数相同,但列数不同。为了使我的解释易于理解,让我们将矩阵称为ab

矩阵a具有256列和600行

矩阵b具有55列和600行

我想要实现的是计算两个输入矩阵的列之间的相关系数矩阵,从而得到一个尺寸为256列和55行的矩阵。

我要计算皮尔森相关系数,它具有以下等式:

enter image description here

我对解决方案的建议是实现两个嵌套的for循环:

int x[600]; 
int y[600];

for (int i = 0; i < 256; ++i){
          for (int j= 0; j<600; j++ ) {
               x[j] = matrixA[j][i];
          }

          for (int k = 0; k < 55; ++k){
             for (int j= 0; j<600; j++ ) {
                  y[j] = matrixB[j][k];
             }
            }
    }

我不确定这是否是正确的方法。否则我该如何实现?

1 个答案:

答案 0 :(得分:0)

好的,因此假设您要将结果存储在c中,且亮度为256、50,请执行以下操作:

for(int i = 0; i < 256; ++i)
    for(int j = 0; j < 55; ++j)
    {
        c[i][j] = compute_correlation(matrixA, i, matrixB, j);
    }

使用compute_correlation一个简单的for循环,它将根据形式来计算值:

double compute_correlation(double matrixA[600][256], i, double matrixB[600][55], j)
{
    for(int k = 0; k < 600; ++k)
    {
      // Compute means of both rows
    }
    for(int k = 0; k < 600; ++k)
    {
      // Compute numerator
      // Compute denominator
    }
    return numerator / denominator;
}