matlab如何根据一些离散点得到pchip插值函数的导数

时间:2017-03-15 03:25:18

标签: matlab

我有一些数据     interesting_data =

    -0.5665   -0.5329   -0.2251    0.2251    0.5329    0.5689

很明显索引3和4之间存在零交叉。我发现我可以使用此函数来获得pchip插值的零交叉点。

fzero(@(xi)interp1(1:1:length(interesting_data),interesting_data,xi,'pchip'),3) 

所以我相信matlab在[3,4]之间有pchip插值的后置函数。假设pchip模块将生成等式为y = a x ^ 2 + b x + C,x在[3,4]之内,或者类似的东西。我希望知道fomular,然后我可以计算过零位置的推导,在这种情况下,x = 3.5。 有没有办法做到这一点?或者直接从隐藏方程中推导出推导的任何函数?

1 个答案:

答案 0 :(得分:0)

为什么不看看标志何时翻转。这是你的阵列和标志:

array =[ -0.5665   -0.5329   -0.2251    0.2251    0.5329    0.5689];

sign(array)
ans =
    -1    -1    -1     1     1     1

当符号发生变化时,它将返回2或-2

diff(sign(array))
ans =
     0     0     2     0     0

所以只需找到非零

find(abs(diff(sign(array))))
ans =
     3

让我们尝试另一个数组

array=randn(1,10)
array =
          1.42837429557213          1.40677399588789         0.257616732589725         -0.93068654061524         0.391997711945428          1.53494945223268         -1.03683690895487         0.126547794228052        -0.394102426308772        -0.562889126426436

diff(sign(array))
ans =
     0     0    -2     2     0    -2     2    -2     0

find(diff(sign(array)))
ans =
     3     4     6     7     8