我最近在matlab中用到插值法,看起来有interp1/2/3和interpn这两个函数可以用。然而,我惊讶地发现,这两类函数不是等价的:
interp1和interpn是等价的,结果都是1584
interp1([1,2],[0,14317],1.1107)=1584
interpn([1,2],[0,14317],1.1107)=1584
但interp2和interpn就不一样了!
interp2([1,2],[6,7],[0,14317;25217,45817],1.1107,6.1348,'linear')=5077
interpn([1,2],[6,7],[0,14317;25217,45817],1.1107,6.1348,'linear')=4815
怎么会这样呢?原来interp1/2/3主要用于meshgrid,而interpn用于ngrid
具体有什么差别我也不懂,但简单地说,meshgrid的xy要交换!
交换了xy之后,interp2就和interpn一样了。
interp2([6,7],[1,2],[0,14317;25217,45817],6.1348,1.1107,'linear')=4815
结论:而对于多维度计算来说,用interpn就好......