最小二乘法拟合直线--C++/Opencv
来源:互联网 发布:国内网络虚拟货币 编辑:程序博客网 时间:2024/05/21 10:01
1.原理
在现实中经常遇到这样的问题,一个函数并不是以某个数学表达式的形式给出,而是以一些自变量与因变量的对应表给出,老师讲课的时候举的个例子是犯罪人的身高和留下的脚印长,可以测出一些人的数据然后得到一张表,它反应的是一个函数,回归的意思就是将它还原成数学表达式,这个式子也称为经验表达式,之所以叫经验就是说它不完全是实际中的那样准确,是有一定偏差的,只是偏差很小罢了。
最小二乘法
方程是y=F(x),方程中含有一些待定系数an,给出真实值{(xi,yi)|i=1,2,...n},将这些x,y值代入方程然后作
差,可以描述误差:yi-F(xi),为了考虑整体的误差,可以取平方和,之所以要平方是考虑到误差可正可负直接相加可以相互抵消,所以记误差为:
e=∑(yi-F(xi))^2
de/da1=0
de/da2=0
...
de/dan=0
n个方程确定n个未知量为常量是理论上可以解出来的。用这种误差分析的方法进行回归方程的方法就是最小二乘法。
线性回归
如果经验方程是线性的,形如y=ax+b,就是线性回归。按上面的分析,误差函数为:
e=∑(yi-axi-b)^2
各偏导为:
de/da=2∑(yi-axi-b)xi=0
de/db=-2∑(yi-axi-b)=0
于是得到关于a,b的线性方程组:
(∑xi^2)a+(∑xi)b=∑yixi
(∑xi)a+nb=∑yi
设A=∑xi^2,B=∑xi,C=∑yixi,D=∑yi,则方程化为:
Aa+Bb=C
Ba+nb=D
解出a,b得:
a=(Cn-BD)/(An-BB)
b=(AD-CB)/(An-BB)
这就是我们要进行的算法。
2.C++实现
#include
#include
#include
using namespace std;
int main(int argc, char *argv[])
{
}
3.OpenCV结构实现
#include "cv.h"
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/gnuhpc/archive/2009/07/21/4368834.aspx
- 最小二乘法拟合直线--C++/Opencv
- 最小二乘法拟合直线--C++/Opencv
- 最小二乘法直线拟合(C++)
- 最小二乘法直线拟合
- 最小二乘法直线拟合
- 最小二乘法直线拟合
- 最小二乘法直线拟合
- 最小二乘法直线拟合
- 最小二乘法 直线拟合
- 最小二乘法拟合直线
- 最小二乘法直线拟合
- 最小二乘法直线拟合
- 最小二乘法拟合直线
- 最小二乘法直线拟合
- 最小二乘法实现直线拟合
- 最小二乘法直线拟合
- 最小二乘法拟合直线
- 最小二乘法直线拟合简介
- C++主要的技术领域应用
- vxworks@vmware便捷方法
- [教程]破解QQ本地会员
- android学习笔记33--------------通过号码获得联系人(识别飞信号与+86等号码问题)
- adobe flash player 录音、视频的设置。
- 最小二乘法拟合直线--C++/Opencv
- 大数阶乘问题的c++实现
- Ogre的节点SceneNode(Node)
- C++ Psapi.h头文件
- FFF Warm Up Contest 2 - ZOJ 2012 February [iSea]
- 嵌入式操作系统内核原理和开发(中断)
- Codeforces Round #109 (Div. 2) D. Colliders 数学
- WSAEventselect模型中各网络事件触发机制
- Sicily 4832. Paper Route