博文

分段的插值算法(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];}......

阅读全文(15057) | 评论: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显示  */}......

阅读全文(14708) | 评论:0