【C++】 代码实现:计算相关系数

一、程序说明:

  1. 对 vector 中存放的数值求和函数: std::accumulate()。方便简捷。
  2. 当中的数据类型转换用显示转换更好(这是较早些时候的代码): static_cast

二、实现代码:

//计算相关系数
double gama(vector &A, vector &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));
}

 

你可能感兴趣的:(C++,实战应用技巧)