注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Oh! I see you!

Hi! ppmm~~

 
 
 

日志

 
 

Excel双线性插值(二维插值)  

2015-02-08 17:49:36|  分类: Excel |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

前两天和网友探讨插值问题,集众人智慧写出了一个二维插值公式,整理一下过程,
以下不全是原帖内容。


发信人: acce (如有雷同概不负责,如被气死概不负责), 信区: OfficeSoft
标  题: Re: excel 插值问题
发信站: 水木社区 (Fri Feb  6 18:54:17 2015), 站内

求个二维插值的公式。
X、Y是单调、随机的,不一定是等差数列。

X\Y      1       2       3       4       5       10
0       0.25    0.25    0.25    0.25    0.25    0.25
1       0.23    0.23    0.24    0.24    0.24    0.24
2       0.17    0.20    0.20    0.20    0.20    0.20
3       0.14    0.16    0.17    0.17    0.17    0.17
4       0.11    0.14    0.15    0.15    0.15    0.15
5       0.09    0.12    0.13    0.13    0.13    0.13
6       0.08    0.10    0.11    0.12    0.12    0.12
7       0.07    0.09    0.10    0.10    0.11    0.11
8       0.06    0.08    0.09    0.09    0.10    0.10
9       0.06    0.07    0.08    0.09    0.09    0.09
10      0.05    0.07    0.08    0.08    0.08    0.09

X1=     4.6
Y1=     3.5
Z1=     ?


发信人: oicu (Oh! I see you!), 信区: OfficeSoft
标  题: Excel二维插值
发信站: 水木社区 (Sat Feb  7 14:02:59 2015), 站内

为啥不用matlab的interp2,可选的method还多一些,
除了linear还有nearest和cubic。

X1的值在B16,Y1的值在B17。

过程不多解释了,分步方法在Excel附件里:

关键点是找出临近的那个4个值,可用LOOKUP、INDEX/OFFSET+MATCH,
计算用FORECAST或者TREND。

顺手做了个条件格式的高亮提示,f区域根据x和y值动态高亮

Excel双线性插值(二维插值) - oicu - Oh! I see you!
 


发信人: acce (如有雷同概不负责,如被气死概不负责), 信区: OfficeSoft
标  题: Re: Excel二维插值
发信站: 水木社区 (Sat Feb  7 17:30:31 2015), 站内

参考你给的wiki写了这个,好复杂

=MMULT(MMULT({1,0}+{-1,1}*TREND({0;1},OFFSET(A1,MATCH($B$16,$A$2:$A$12),0,2,1),
B16),OFFSET(A1,MATCH($B$16,$A$2:$A$12),MATCH($B$17,$B$1:$G$1),2,2)),{1;0}+{-1;1}
*TREND({0,1},OFFSET(A1,0,MATCH($B$17,$B$1:$G$1),1,2),B17))


发信人: oicu (Oh! I see you!), 信区: OfficeSoft
标  题: Re: Excel二维插值
发信站: 水木社区 (Sat Feb  7 20:14:40 2015), 站内

既然看着头晕,那我就无聊写一下。。。

先定义名称x_axis和y_axis分别表示X轴和Y轴。

Excel里用大括号表示向量。

m*1矩阵即行向量,Excel里元素用逗号隔开:
[1-x x] = [1 0] + [-1 1] * x

1*n矩阵即列向量,Excel里元素用分号隔开:
[1-y y]^T = [1 0]^T + [-1 1]^T * y
符号不会写,就写成转置形式了。

于是,得出三矩阵相乘的公式(Excel公式支持分行,这样方便看):

=MMULT(
    MMULT(
      {1,0}+{-1,1}*FORECAST(B16,{0;1},OFFSET($A$1,MATCH(B16,x_axis),0,2,1)),
      OFFSET($A$1,MATCH(B16,x_axis),MATCH(B17,y_axis),2,2)
    ),
    {1;0}+{-1;1}*FORECAST(B17,{0,1},OFFSET($A$1,0,MATCH(B17,y_axis),1,2))
)

矩阵计算是核心部分,用OFFSET直接取得矩阵,剩下边界条件就加IF判断即可,
方法都汇总在Excel附件里面了。
  评论这张
 
阅读(10999)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017