首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Google工作表中插入范围内的数据

如何在Google工作表中插入范围内的数据
EN

Web Applications用户
提问于 2014-07-05 17:24:52
回答 2查看 40.4K关注 0票数 11

我有一个包含数据的数组:

代码语言:javascript
复制
   X      Y
   3     50
   5     60
   9    120
  11    130
  18     90
  20    150

数据完全是非线性的。X被保证被排序。

对于任何给定的值,我希望在数字之间进行线性插值(例如,3 => 50,4 => 55,5 => 60)。双线性插值会更好,但我的期望很低。

EN

回答 2

Web Applications用户

发布于 2017-12-29 06:17:46

这是对雅各布·扬·图因斯特拉的剧本的一个小修改,允许它将数组或值作为第三个参数,以便可以在多个地方同时计算插值函数。唯一的区别是在开头添加了几行;这是将几乎所有自定义函数转换为接受数组的自定义函数的一种快速方法。

代码语言:javascript
复制
function myInterpolation(x, y, value) {
  if (value.map) {
    return value.map(function(v) {
      return myInterpolation(x, y, v);
    });
  }
  //  the rest stays the same

  if (value > Math.max.apply(Math, x) || value < Math.min.apply(Math, x)) {
    throw "value can't be interpolated !!";
    return;
  }

  var check = 0, index;
  for(var i = 0, iLen = x.length; i < iLen; i++) {
    if(x[i][0] == value) {
      return y[i][0];
    } else {      
      if(x[i][0] < value && ((x[i][0] - check) < (value - check))) {
        check = x[i][0];
        index = i;
      }
    }
  }

  var xValue, yValue, xDiff, yDiff, xInt;
  yValue = y[index][0];
  xDiff = x[index+1][0] - check;
  yDiff = y[index+1][0] - yValue;
  xInt = value - check; 

  return (xInt * (yDiff / xDiff)) + yValue;
}
票数 1
EN

Web Applications用户

发布于 2021-10-08 12:45:34

你为什么不试试插值AddOn呢?也许会有帮助。

https://workspace.google.com/u/0/marketplace/app/interpolation/47482038900

各种问候

票数 0
EN
页面原文内容由Web Applications提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://webapps.stackexchange.com/questions/63165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档