样条之Akima光滑插值函数

 核心代码:

  1 //
  2 // Akima光滑插值
  3 // t    - 存放指定的插值点的值
  4 // s[]  - 一维数组,长度为5,其中s(0),s(1),s(2),s(3)返回三次多项式的系数,
  5 //        s(4)返回指定插值点t处的函数近似值f(t)(k<0时)或任意值(k>=0时)
  6 // k    - 控制参数,若k>=0,则只计算第k个子区间[x(k), x(k+1)]上的三次多项式的系数
  7 //
  8 static float GetValueAkima(const void* valuesPtr, int stride, int n, float t, float* s, int k)
  9 { 
 10     int kk,m,l;
 11     float u[5],p,q;
 12 
 13     // 初值
 14     memset(s, 0, 5*sizeof(float));
 15 
 16     // 特例处理
 17     if (n < 1) 
 18     {
 19         return s[4];
 20     }
 21     if (n == 1) 
 22     { 
 23         s[4] = YfGetFloatValue(valuesPtr, stride, 0);  
 24         s[0] = s[4];
 25         return s[4];
 26     }
 27 
 28     float xStep = 1.0f/(n - 1);
 29 
 30     if (n == 2)
 31     { 
 32         float y0 = YfGetFloatValue(valuesPtr, stride, 0); 
 33         float y1 = YfGetFloatValue(valuesPtr, stride, 1); 
 34         s[0] = y0;
 35         s[1] = (y1-y0)/xStep;
 36         s[
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值