GSL 线性拟合小试牛刀

最近,工作中刚好遇到一个热电偶标定的工作,需要用到线性拟合方法。网上查了一下有个强大的GSL库,正好用了一下。废话不多说直接上代码。

#include <gsl/gsl_fit.h>
#include <iostream>
using namespace std;

int main()
{
	// inputs for special functions
	int n = 7;
	double x[7] = { -27.70, -16.00, 1.80, 26.60, 61.50, 81.40, 121.30 };
	double y[7] = { -30.0080, -18.1010, -0.0480, 24.9630, 59.9750, 79.9720, 119.9640};
	double c0, c1, cov00, cov01, cov11, sumsq;
	gsl_fit_linear(x, 1, y, 1, n, &c0, &c1, &cov00, &cov01, &cov11, &sumsq);

	cout << "Intercept\t" << c0 << "\tSlope\t" << c1 << endl;

	double ym = (y[0] + y[1] + y[2] + y[3] + y[4] + y[5]+ y[6])/7.0; //Average of vector y 
	double sct = pow(y[0] - ym, 2) + pow(y[1] - ym, 2) + pow(y[2] - ym, 2) + pow(y[3] - ym, 2); // sct = sum of total squares 
	double R2 = 1 - sumsq / sct;
	cout << "Multiple R-squared: " << R2  << endl;

}

结果如下:

 

 结果显示R2 值很接近1,拟合效果还不错,说明热电偶的线性度还可以。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值