/* 一元全区间不等距插值 ,由 AD 得到的数据必定是16位正整数,用 unsigned int */float enlgr(unsigned int x[],float y[],int n,unsigned int t){ float z; /* 这里假设单调变化,且t在x[i]和x[i-1]之间成立 */ if(t==x[0]) return y[0]; for(i=1;i<n;i++) { if(t==x[i]) return y[i]; if((signed int)(x[i]-t)*(signed int)(x[i-1]-t)<0) break; /* 找到 t 所在区间 */ } z=(y[i]-y[i-1])*(t-x[i-1])/(x[i]-x[i-1]); return z+y[i-1];}

评论