资源简介
C++最小二乘法拟合直线,根据数据直接计算直线的斜率、截距和相似度,即拟合的好坏。
代码片段和文件信息
#include
#include
using namespace std;
/*************************************************************************
* ref:http://blog.csdn.net/pl20140910/article/details/51926886
最小二乘法拟合直线,y = a*x + b; n组数据; r-相关系数[-11]fabs(r)->1说明xy之间线性关系好,fabs(r)->0,xy之间无线性关系,拟合无意义
a = (n*C - B*D) / (n*A - B*B)
b = (A*D - B*C) / (n*A - B*B)
r = E / F
其中:
A = sum(Xi * Xi)
B = sum(Xi)
C = sum(Xi * Yi)
D = sum(Yi)
E = sum((Xi - Xmean)*(Yi - Ymean))
F = sqrt(sum((Xi - Xmean)*(Xi - Xmean))) * sqrt(sum((Yi - Ymean)*(Yi - Ymean)))
**************************************************************************/
void LineFitLeastSquares(float *data_x float *data_y int data_n)
{
float A = 0.0;
float B = 0.0;
float C = 0.0;
float D = 0.0;
float E = 0.0;
float F = 0.0;
for (int i=0; i {
A += data_x[i] * data_x[i];
B += data_x[i];
C += data_x[i] * data_y[i];
D += data_y[i];
}
// 计算斜率a和截距b
float a b temp = 0;
if( temp = (data_n*A - B*B) )// 判断分母不为0
{
a = (data_n*C - B*D) / temp;
b = (A*D - B*C) / temp;
}
else
{
- 上一篇:状态转换图c语言编译原理
- 下一篇:语音信号处理c程序
相关资源
- c++primerplus(第六版)课后编程练习答
- 多元线性回归c++算法
- 远程桌面(带C++源码)
- n个数冒泡排序法
- 24点算法 C++实现
- 学生信息查询系统c++builder
- C++ MP3播放器
- 用回溯法求子集和的c++代码
- 最小生成树的源代码(C++实现)
- C++编写的简单仓库管理系统
- 优秀开源项目基于VC++和MFC基于VC++和
- MFC编程案例之文件管理器C++
- c++/mfc编写的网络电话,网络语音 程序
- 使用Win32 API的相关知识实现矩阵的乘
- 八皇后图形演示 C++的
- 一个基于C++实现的完整进行FTP应用管
- MPI_并行程序设计中文教程C++/c/Fortan
- C++完整实现DES算法
- 非常简单的C++迷宫程序,是数据结构
- 基于vc++的波形显示源码
- c++ HTTP协议库 httplib
- 大整数乘法 c++ 代码
- 使用C++编写超经典的坦克大战
- MFC实现点对点通信
- C Socket通信多线程数据双向收发VS201
- 数据结构—图书馆管理系统C++编写
- 基于TAO的CORBA程序设计
- C++-小精灵程序
- VC++软键盘源码和QQ软键盘差不多哦
- QM算法C++实现
评论
共有 条评论