传感与检测C语言程序.doc_第1页
传感与检测C语言程序.doc_第2页
传感与检测C语言程序.doc_第3页
传感与检测C语言程序.doc_第4页
传感与检测C语言程序.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1某压力传感器的校准数据如下表所示,试分别用端点连线法和最小二乘法求校准直线、非线性误差,并计算迟滞和重复性误差。端点连线法对于传感器正行程和反行程的三次测量,可通过如下方法解决:平均值法:即先将三次测量的正行程和反行程的值求平均值,再对求的平均值进行直线拟合。最小二乘法 即先将三次测量的正行程和反行程的值求平均值,再对求的平均值用最小二乘法进行直线拟合。则有c语言程序:#include #include /*求绝对值*/float fab(float a)float z; z=a; if(a0) z=-a; return z;/* 求线性度*/float linethl(float a,float b,float *p)float max,z,c;int i;c=*(p+1)-a*(*p)-b;max=fab(c);for(i=0;imax) max=z;return max;/*n个数之和*/float sums(float *p ,int n)float y=0; int i; for(i=0;in;i+) y=*p+y; p=p+2; return y;/*n个x,y数之积的和*/float inc(float *p ,int n)float y=0; int i; for(i=0;in;i+) y=(*p)*(*(p+1)+y; p=p+2; return y;/*n个数平方之和*/float sums2(float *p ,int n)float y=0; int i; for(i=0;in;i+) y=(*p)*(*p)+y; p=p+2; return y;/*迟滞误差计算*/float delay(float *p)float max,z,c;int i;c=*(p+1)-(*p);max=fab(c);for(i=0;imax) max=z; return max;/*重复误差计算*/float repeat(float *p)float max=0,c,c1; int i,j,k,q;for(i=0;i6;i+) for(q=0;q2;q+) for(j=0;j3;) for(k=j+2;kmax) max=c1; k=k+2; j=j+2; p=p+1; p=p+4; return max;void main()float a66=-2.73,-2.71,-2.71,-2.68,-2.68,-2.69,0.56,0.66,0.61,0.68,0.64,0.69,3.96,4.06,3.99,4.09,4.03,4.11,7.40,7.49,7.43,7.53,7.45,7.52,10.88,10.95,10.89,10.93,10.94,10.99,14.42,14.42,14.47,14.47,14.46,14.46, b62=0.00,0.02,0.04,0.06,0.08,0.10,/*bm0为横坐标,bm1为纵坐标*/ temp,aO,k,de,re;int m,n; for(m=0;m6;m+) temp=0; for(n=0;n6;n+) temp=temp+amn; temp=temp/6; bm1=temp; for(m=0;m6;m+) for(n=0;n2;n+) printf(%f ,bmn); /* 端点法 */ printf(n端点法的直线斜率K与截距AO为:n); k=(b51-b01)/(b50-b00); aO=b01-k*b00; printf(端点法的直线斜率K=%f,截距AO=%fn,k,aO); float thl; thl=linethl( k, aO,&b00)/(b51-b01); printf(端点法的直线线性度为:n%fn,thl); /* 最小二乘法 */ printf(n最小二乘法的直线斜率K与截距AO为:n); k=(6*inc(&b00,6)-sums(&b00,6)*sums(&b01,6)/(6*sums2(&b00,6)-sums(&b00,6)*sums(&b00,6); aO=(sums2(&b00,6)*sums(&b01,6)-sums(&b00,6)*inc(&b00,6)/(6*sums2(&b00,6)-sums(&b00,6)*sums(&b00,6); printf(最小二乘法的直线斜率K=%f,截距AO=%fn,k,aO); thl=linethl( k, aO,&b00)/(b51-b01); printf(端点法的直线线性度为:n%fn,thl); /*迟滞和重复性误差*/ de=delay(&a00)/(b51-b01); re=repeat(&a00)/(b51-b01); printf(迟滞误差de=%f和重复性误差re=%fn,de,re);结果:2 利用电位差计测量某一电势,测了16次,等精度测量所得数据如下:(单位:mV)85.30 85.71 84.94 84.70 85.63 86.85 85.24 85.36 84.86 85.21 84.97 85.19 85.35 85.21 85.16 85.32(1)计算(2)判断有无粗差。则有c语言程序:#include #include /*n个数方差*/float sums2(float *p ,int n,float a)float y=0; int i,j=0; for(i=0;in;i+) if(*p!=0) y=(*p-a)*(*p-a)+y; else j+; p=p+1; y=y/(n-1-j);return y;/*数据中坏值得个数计算*/int bad(float *p,int n)int i,j=0; for(i=0;in;i+) if(*p=0) +j; return j;/*数据中坏值为0时n个数计算平均数*/float aver(float *p,int n) float th=0; int i,j=0;for(i=0;in;i+)if(*p=0) j+;th=th+(*p);p=p+1;th=th/(n-j);return th;void main()float a16=85.30,85.71,84.94,84.70,85.63,86.85,85.24,85.36,84.86,85.21,84.97,85.19,85.35,85.21,85.16,85.32,x,t,u;int i,n=16,j=0,k=1,m;/*平均数与方差的计算*/ while(j!=k) j=0;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论