cnchip
一个测量设备,通过采样8次测量值计算一个矫正系数,从而实现将一个不正确的测量值矫正到正确的值上。
能否帮看看这个算法是怎么实现的吗?
以下给出实测的4组数据:
1002 1000 1002 1002 (这一行是已经确定的正确数值,并且要将这个数值告诉设备)
997.1 995.3 996.8 992.2 (以下8个,是设备每次矫正前自行测量的实际值,看上去都不正确)
997.5 996.3 998.1 993.8
998.1 997.0 997.1 993.1
997.9 996.7 997.7 994.4
997.7 996.3 997.2 993.1
997.8 996.8 996.6 993.5
997.6 996.9 997.5 995.0
997.9 997.0 996.7 992.9
0.287 0.536 0.491 0.831 (这是根据上面8个实际测量值计算出的标准差)
1.004360 1.003512 1.004813 1.008556 (这个系数是什么?关键应该就是这个系数)
不过,貌似只要将每次实际获得的测量值乘以上面这个系数,就可以得到对应的较准确的真实值。
分别乘以系数后,得到的是:
1001.4 998.8 1001.6 1000.7
1001.8 999.8 1002.9 1002.3
1002.5 1000.5 1001.9 1001.6
1002.3 1000.2 1002.5 1002.9
1002.0 999.8 1002.0 1001.6
1002.2 1000.3 1001.4 1002.0
1001.9 1000.4 1002.3 1003.5
1002.3 1000.5 1001.5 1001.4
没学过统计,弄的比较累脑袋比较辛苦,先谢了...
Dearc
我来猜一下,感觉插值和拟合可以办到
设矫正系数k=y/x
lm(y/x~x)
得到公式k=2.008840--0.001007x
代入x分别计算出系数/8=1.004156
其他几个1.005187,1.005199,1.008419
,如果插值进去,并且用矩阵的方法解,可能更精确一点
cnchip
oh,非常感谢,可惜...看不懂,崩溃.. :cry:
libingfei
以下计算后就是你那组数。
data<-read.table(header=FALSE,text="997.1 995.3 996.8 992.2
997.5 996.3 998.1 993.8
998.1 997.0 997.1 993.1
997.9 996.7 997.7 994.4
997.7 996.3 997.2 993.1
997.8 996.8 996.6 993.5
997.6 996.9 997.5 995.0
997.9 997.0 996.7 992.9")
coef<-c(1002,1000,1002,1002)/apply(data,2,mean)
等价于直接lm(y~x-1)截断值为0.