博文

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

阅读全文(4923) | 评论: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++) ......

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