一、程序说明:
- 对 vector 中存放的数值求和函数: std::accumulate()。方便简捷。
- 当中的数据类型转换用显示转换更好(这是较早些时候的代码): static_cast<double>
二、实现代码:
//计算相关系数
double gama(vector<double> &A, vector<double> &B, long Length) {
double sumA(0.0), sumB(0.0), aveA(0.0), aveB(0.0);
//求和
sumA = std::accumulate(A.begin(), A.end(), 0.0);
sumB = std::accumulate(B.begin(), B.end(), 0.0);
//求平均值
aveA = sumA / double(Length);
aveB = sumB / double(Length);
//计算相关系数
double R1(0), R2(0), R3(0);
for (long i = 0; i < Length; i++)
{
R1 += (A[i] - aveA) * (B[i] - aveB);
R2 += pow((A[i] - aveA), 2);
R3 += pow((B[i] - aveB), 2);
}
return (R1 / sqrt(R2*R3));
}