matlab - griddedInterpolant 如何处理应该被拒绝的输入?
问题描述
的文档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
.
这非常令人困惑。为什么它不抛出错误?
解决方案
我猜想当前的行为是 TMW 的一种设计选择,它允许大多数用户“摆脱”一些可能使用低阶多项式解决的边缘情况,从而为大多数用户省去了麻烦。至于文件 - 这可能是一个疏忽。
看看下面的例子:
xq = -2:0.1:2;
p = pchip([0,1],[1,2], xq);
figure(); plot(xq, p);
这运行没有问题并产生:
...正如我们所见,它退化为线性曲线。这并不是真正的问题,因为它似乎尊重了保形分段多项式的要求。
事实上,如果你希望它是立方的(即 3 次方),它需要 4 个数据点(但它并不是真正的“分段”,因为它只有 1 个)。
推荐阅读
- c - 炸弹实验室阶段_3,不知道如何找到开关块的起始地址
- c# - 无法从 Action 转换
行动 即使通过 T 被限制为从事件扩展? - jmx - 基于 Web 的 jmx 监控
- c++ - 如何在循环双向链表中使用指针
- python - 如果 `p` 是 `block*` 类型,为什么 `*(block **)p` 与 `block` 不同?[CPython源代码]
- c# - 管理员的单一密码和用户自己的密码
- mysql - MySQL服务器执行查询需要很长时间
- d - 尝试导入一些模块但得到“..which can not be read”
- java - 即使在库中检查了正确的类之后,Java ClassNotFoundException
- c - I am trying to merge two arrays and sort it in descending order