K型热电耦高精度分段线性拟合(C程序)

extern float GetTempOfVolMi(float V)
{
 float K,B;
 if(0.03947 <= V < 2.02308) //0~50
 {
  K = 24.731;
  B = 0.1341;
 }
 else if(2.02308 <= V < 4.09623)//50-100
 {
  K = 24.075;
  B = 1.3446;
 }
 else if(4.09623 <= V < 6.13834)//100-150
 {
  K = 24.515;
  B = -0.5417;
 }
 else if(6.13834 <= V < 8.13847)//150-200
 {
  K = 24.982;
  B = -3.3434;
 }
 else if(8.13847 <= V < 10.15337)//200-250
 {
  K = 24.824;
  B = -1.9926;
 }
 else if(10.15337 <= V < 12.20857)//250-300
 {
  K = 24.336;
  B = 2.975;
 }
 else if(12.20857 <= V < 14.29315)//300-350
 {
  K = 23.97;
  B = 7.4128;
 }
 else if(14.29315 <= V < 16.39714)//350-400
 {
  K = 23.775;
  B = 10.196;
 }
 else if(16.39714 <= V < 18.51581)//400-450
 {
  K = 23.59;
  B = 13.219;
 }
 else if(18.51581 <= V < 20.64429)//450-500
 {
  K = 23.483;
  B = 15.19;
 }
 else if(20.64429 <= V < 22.77643)//500-550
 {
  K = 23.483;
  B = 15.17;
 }
 else if(22.77643 <= V < 24.90547)//550-600
 {
  K = 23.474;
  B = 15.376;
 }
 else if(24.90547 <= V < 27.02486)//600-650
 {
  K = 23.579;
  B = 12.729;
 }
 else if(27.02486 <= V < 29.12897)//650-700
 {
  K = 23.763;
  B = 7.767;
 }
 else if(29.12897 <= V <31.21345)//700-750
 {
  K = 23.995;
  B = 0.9894;
 }
 else if(31.21345 <= V <33.27538)//750-800
 {
  K = 24.258;
  B = -7.2115;
 }
 else if(33.27538 <= V < 35.31311)//800-850
 {
  K = 24.539;
  B = -16.581;
 }
 else if(35.31311 <= V <37.32592)//850-900
 {
  K = 24.835;
  B = -27.028;
 }
 else if(37.32592 <= V <39.31353)//900-950
 {
  K = 25.146;
  B = -38.627;
 }
 else if(39.31353 <= V <41.27561)//950-1000
 {
  K = 25.476;
  B = -51.592;
 }
 else return -1;
 return V*K+B;
  
}

时间: 2024-08-09 21:38:51

K型热电耦高精度分段线性拟合(C程序)的相关文章

MeteoInfoLab脚本示例:线性拟合

MeteoInfoLab提供一个线性拟合函数linregress,参数是参与拟合的两个数据序列,返回拟合的斜率.截距和相关系数.有了上述拟合参数可以用polyval函数生成拟合数据(直线).然后可以将数据.拟合线.公式等绘图. 脚本程序: fn = os.path.join('D:/KeyData/PMMUL/data/54500_PMMUL_DA.csv') if os.path.exists(fn): print fn tdata = readtable(fn, delimiter=',',

用python的numpy作线性拟合、多项式拟合、对数拟合

转自:http://blog.itpub.net/12199764/viewspace-1743145/ 项目中有涉及趋势预测的工作,整理一下这3种拟合方法:1.线性拟合-使用mathimport mathdef linefit(x , y):    N = float(len(x))    sx,sy,sxx,syy,sxy=0,0,0,0,0    for i in range(0,int(N)):        sx  += x[i]        sy  += y[i]        s

51学习笔记之以硬件spi与max6675通信实现K型热电偶测温

硬件:max6675  STC12C5A60S2 K型热电偶 功能:实现读取K型热电偶温度,并通过上位机打印出实际温度 难点:读取Max6675的数据是16位,而STC12系列单片机每次接收的数据为8位,如何通过硬件SPI实现直接读取Max6675的温度成为一难点.网上相关教程以及相关论文均是采用软件SPI模拟时序方式采集数据,故而通过STC12系列单片机自带的硬件SPI实现直接读取Max6675的数据具有实际研究意义. 代码: #include "reg51.h" #include

【模式识别与机器学习】——3.3分段线性判别函数

---恢复内容开始--- 出发点: 线性判别函数在进行分类决策时是最简单有效的,但在实际应用中,常常会出现不能用线性判别函数直接进行分类的情况. 采用广义线性判别函数的概念,可以通过增加维数来得到线性判别,但维数的大量增加会使在低维空间里在解析和计算上行得通的方法在高维空间遇到困难,增加计算的复杂性. 引入分段线性判别函数的判别过程,它比一般的线性判别函数的错误率小,但又比非线性判别函数简单. 图例: 用判别函数分类 可用一个二次判别函数来分类 也可用一个分段线性判别函数来逼近这个二次曲线 分段

使用tensorflow实现机器学习中的线性拟合

使用tensorflow实现机器学习中的线性拟合这个例子是模拟的单变量线性回归,通过提高单变量的阶数来增加特征数量,例如:4阶相当于分解为四个特征这种思想同样适用于多变量线性回归 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['FangSong'] # 用来正常显示中文标签 plt.rcParams['axes.unicode_

机器学习-TensorFlow建模过程 Linear Regression线性拟合应用

TensorFlow是咱们机器学习领域非常常用的一个组件,它在数据处理,模型建立,模型验证等等关于机器学习方面的领域都有很好的表现,前面的一节我已经简单介绍了一下TensorFlow里面基础的数据结构即:Tensor和Dataset: 这里咱们开始介绍TensorFlow的建模过程以及验证模型的一些简单方法.其实无论是sklearn还是TensorFlow,他们的模型建立过程都是相似的,都是经历columns类型声明,模型定义,数据训练,validation等等几个步骤.前面的几节内容我已经简单

用随机梯度下降法(SGD)做线性拟合

1.综述 scikit-learn的线性回归模型都是通过最小化成本函数来计算参数的,通过矩阵乘法和求逆运算来计算参数.当变量很多的时候计算量会非常大,因此我们改用梯度下降法,批量梯度下降法每次迭代都用所有样本,快速收敛但性能不高,随机梯度下降法每次用一个样本调整参数,逐渐逼近,效率高,本节我们来利用随机梯度下降法做拟合. 2.随机梯度下降法 梯度下降就好比从一个凹凸不平的山顶快速下到山脚下,每一步都会根据当前的坡度来找一个能最快下来的方向.随机梯度下降英文是Stochastic gradient

数据趋势拟合--线性拟合

lm函数,可以用一种线程关系建立两个数据之间的发展趋势,也就是线程拟合,并用predict函数将这种发展趋势的结果用于数据的预测. fr = lm(Height~Weight,data=hw) coef(fr) 建立基于Weight来预测Height的线程拟合.由截距和斜率定义的一条直线.可视化如下图示: library("ggplot2") ggplot(heights.weights,aes(x=Height,y=Weight)) + geom_point()+geom_smoot

6、基于highcharts实现的线性拟合,计算部分在java中实现,画的是正态概率图

1.坐标点类 package cn.test.domain; public class Point { double x; double y; public Point(){ } public Point(double x, double y) { super(); this.x = x; this.y = y; } public double getX() { return x; } public void setX(double x) { this.x = x; } public doubl