griddedInterpolant如何处理应被拒绝的输入?

时间:2018-10-23 18:29:58

标签: matlab interpolation polynomial-math polynomials undocumented-behavior

griddedInterpolant的文档指出pchip方法“至少需要4个(网格)点”。但是,当我使用2点矢量运行它时,它是这样的:

>> F = griddedInterpolant([0,1],[1,2],'pchip')

F = 

  griddedInterpolant with properties:

            GridVectors: {[0 1]}
                 Values: [1 2]
                 Method: 'pchip'
    ExtrapolationMethod: 'pchip'

请注意,该方法仍为pchip

这非常令人困惑。为什么不引发错误?

1 个答案:

答案 0 :(得分:1)

我猜当前的行为是TMW的一种设计选择,它通过允许大多数用户“摆脱”某些可能会使用低阶多项式解决的边缘情况,从而为大多数用户省去了麻烦。至于文档-这可能是疏忽。

看看下面的例子:

if($shipment){
    foreach($shipment as $shiptmentList){
        foreach($shiptmentList as $key => $shiporder){
            foreach($shiporder as $key => $itemcharge){
                foreach($itemcharge as $key=> $eachcharge){
                    var_dump($eachcharge[0]['Amount']);
                }
            }
       }
    }
}

此程序运行正常,并产生:

Result of example code

...,如我们所见,它退化为线性曲线。这实际上不是问题,因为它似乎是从保形分段多项式中尊重requirements的。

的确,如果您希望它是 cubic (三次方)(即3次方),它需要4个数据点(但实际上并不是“逐段”的,因为它只有1个)。