我有两个矩阵,它们的行数相同,但列数不同。为了使我的解释易于理解,让我们将矩阵称为a
和b
。
矩阵a具有256列和600行
矩阵b具有55列和600行
我想要实现的是计算两个输入矩阵的列之间的相关系数矩阵,从而得到一个尺寸为256列和55行的矩阵。
我要计算皮尔森相关系数,它具有以下等式:
我对解决方案的建议是实现两个嵌套的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];
}
}
}
我不确定这是否是正确的方法。否则我该如何实现?
答案 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;
}