CASL 一维查表函数

function GetFromTable (var ElementCounts,var IndexValue,var TableIndexArray[],var TableValueArray[])
{
  /*
  本函数可以完成一个一维查表的操作:
  ElementCounts:所引用表的节点数量,不能小于1
  IndexValue:索引值,该函数将在表中查找索引值为该值处所对应的表值,如果该值不在节点上,则进行线性插值处理
  TableIndexArray: 查表索引,要求该索引值是单调递增的
  TableValueArray: 查表值,列出对应索引处的值,并不要求单调性
  */

  int rowPointCount,i;
  double WorkPoint;
  double tempFun;

  rowPointCount=ElementCounts;
  WorkPoint=IndexValue;

  //查找工作点区间
  if (WorkPoint<=TableIndexArray[0])//工作点在下界下方
  {
    return TableValueArray[0];
  }
  if (WorkPoint>=TableIndexArray[rowPointCount-1])//工作点在上界上方
  {
    return TableValueArray[rowPointCount-1];
  }
  for (i=0;i<rowPointCount-1;++i)//检测是否落在index后的一个区域内
  {
    if (WorkPoint==TableIndexArray[i])//如果工作点在区间分界点上
    {
      return TableValueArray[i];
    }
    if (WorkPoint>TableIndexArray[i])//如果工作点大于区域下界
    {
      if (WorkPoint<TableIndexArray[i+1])//并且工作点小于区域上界
      {
        tempFun=TableValueArray[i]+(TableValueArray[i+1]-TableValueArray[i])*(WorkPoint-TableIndexArray[i])/(TableIndexArray[i+1]-TableIndexArray[i]);
        return tempFun;
      }
    }
  }
}

下面是函数使用的一个demo:

int sizeOfTable=5;
double 
  indexTable[5]={0  ,1  ,2  ,3  ,4},
  valueTable[5]={1.5,2.2,3.7,4.6,5.1};

double idxV=2.5;
double tableV;

tableV = GetFromTable(sizeOfTable,idxV,indexTable,valueTable);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

团圆吧

1 分钱,求鼓励。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值