最小二乘法拟合曲线:4次函数
来源:互联网 发布:linux网络服务起不来 编辑:程序博客网 时间:2024/04/27 23:11
{
double a, b, c, d, e;
//Mat A = Mat_<double>(5, 5);
//Mat B = Mat_<double>(5, 1);
//Mat C = Mat_<double>(5, 1);
Mat A(5, 5, CV_64F);
Mat B(5, 1, CV_64F);
Mat X(5, 1, CV_64F);
double sum = 0;
for (size_t i = 0; i < size; ++i)
{
sum += pow(src_x[i], 8);
}
A.at<double>(0, 0) = sum;
sum = 0;
for (size_t i = 0; i < size; ++i)
{
sum += pow(src_x[i], 7);
}
A.at<double>(0, 1) = A.at<double>(1, 0) = sum;
sum = 0;
for (size_t i = 0; i < size; ++i)
{
sum += pow(src_x[i], 6);
}
A.at<double>(0, 2) = A.at<double>(1, 1) = A.at<double>(2, 0) = sum;
sum = 0;
for (size_t i = 0; i < size; ++i)
{
sum += pow(src_x[i], 5);
}
A.at<double>(0, 3) = A.at<double>(1, 2) = A.at<double>(2, 1) = A.at<double>(3, 0) = sum;
sum = 0;
for (size_t i = 0; i < size; ++i)
{
sum += pow(src_x[i], 4);
}
A.at<double>(0, 4) = A.at<double>(1, 3) = A.at<double>(2, 2) = A.at<double>(3, 1) = A.at<double>(4, 0) = sum;
sum = 0;
for (size_t i = 0; i < size; ++i)
{
sum += pow(src_x[i], 3);
}
A.at<double>(1, 4) = A.at<double>(2, 3) = A.at<double>(3, 2) = A.at<double>(4, 1) = sum;
sum = 0;
for (size_t i = 0; i < size; ++i)
{
sum += pow(src_x[i], 2);
}
A.at<double>(2, 4) = A.at<double>(3, 3) = A.at<double>(4, 2) = sum;
sum = 0;
for (size_t i = 0; i < size; ++i)
{
sum += src_x[i];
}
A.at<double>(3, 4) = A.at<double>(4, 3) = sum;
sum = 0;
for (size_t i = 0; i < size; ++i)
{
sum += 1;
}
A.at<double>(4, 4) = sum;
sum = 0;
for (size_t i = 0; i < size; ++i)
{
sum += pow(src_x[i], 4) * src_y[i];
}
B.at<double>(0, 0) = sum;
sum = 0;
for (size_t i = 0; i < size; ++i)
{
sum += pow(src_x[i], 3) * src_y[i];
}
B.at<double>(1, 0) = sum;
sum = 0;
for (size_t i = 0; i < size; ++i)
{
sum += pow(src_x[i], 2) * src_y[i];
}
B.at<double>(2, 0) = sum;
sum = 0;
for (size_t i = 0; i < size; ++i)
{
sum += src_x[i] * src_y[i];
}
B.at<double>(3, 0) = sum;
sum = 0;
for (size_t i = 0; i < size; ++i)
{
sum += src_y[i];
}
B.at<double>(4, 0) = sum;
//X = A.inv() * B;
solve(A, B, X);// A * X = B
a = X.at<double>(0, 0);
b = X.at<double>(1, 0);
c = X.at<double>(2, 0);
d = X.at<double>(3, 0);
e = X.at<double>(4, 0);
printf("\n%f, %f, %f, %f, %f\n", a, b, c, d, e);
for (size_t i = 0; i < size; ++i)
{
double ret = a * pow(src_x[i], 4) + b * pow(src_x[i], 3) + c * pow(src_x[i], 2) + d * src_x[i] + e;
dst_y.push_back(ret);
}
- 最小二乘法拟合曲线:4次函数
- 利用最小二乘法拟合任意次函数曲线
- 利用最小二乘法拟合任意次函数曲线(C#)
- 利用最小二乘法拟合任意次函数曲线(C#)
- 最小二乘法拟合曲线:二次函数
- 最小二乘法拟合曲线
- 拟合直线 二次函数曲线 最小二乘法 javascript(p5.js)
- 最小二乘法拟合二元多次曲线
- 用最小二乘法构造拟合曲线
- 最小二乘法求多项式拟合曲线
- 最小二乘法拟合多项式曲线原理
- Eigen最小二乘法拟合三次曲线
- 最小二乘法拟合散点组成的椭圆曲线
- Python 最小二乘法多项式拟合曲线numpy.polyfit(),numpy.poly1d(),pylab
- 移动最小二乘法(MLS)曲线曲面拟合C++代码实现
- 最小二乘法拟合
- 最小二乘法拟合
- 最小二乘法线性拟合和2次曲线拟合算法
- 第6章 Java笔记 面向对象(下)
- 隐藏控制台光标
- 日常笔记----Junit(一)
- c#基础知识点记载
- 【数据库SQL实践】查找入职员工时间排名倒数第三的员工所有信息
- 最小二乘法拟合曲线:4次函数
- 5.在命令行环境中操作MySql数据库
- 学习html的基础知识
- 313. Super Ugly Number
- js中运算符的优先级
- 《机器学习实战》学习笔记-[4]-基于概率的分类-朴素贝叶斯
- HTML5
- Docker学习笔记:容器间通信
- android 两种调用系统资源实现录音