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

本文介绍了一种利用C++标准库函数std::accumulate快速计算向量内数值总和的方法,并展示了如何应用该方法计算两个向量之间的相关系数。通过具体代码示例,详细解释了求和、求平均值及计算相关系数的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、程序说明:

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值