博文
分段的插值算法(2006-03-18 18:24:00)
摘要:/* 一元全区间不等距插值 ,由 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];}......
浮点数在C语言存储格式的转换(2006-03-18 18:12:00)
摘要:/*************************************************************************************\ 浮点数在C语言中是以IEEE格式存储的,一个浮点数占用四个字节, 例如浮点数34.526存为(160,26,10,66)这四个数 本子程序就是实现这种转换 creat at 2006.3.18
\*************************************************************************************/
#define uchar unsigned char#define uint unsigned int
void FtoC(const float f){ uchar i,*px; uchar x[4]; /*定义字符数组,准备存储浮点数的四个字节 */ void *pf; px=x; /* px指针指向数组x */ pf=&f ; /*void 型指针指向浮点数首地址*/ for(i=0;i<4;i++) { *(px+i)=*((char*)pf+i); /*强制void 型指针转成char型,因为*/ } /*void型指针不能运算*/ /*for(i=0;i<4;i++) printf("%d",x[i]); 用于text显示 */}......
