Matlab实现B样条基函数,复现scipy官方文档

偶然看到Python上有B样条基函数,心血来潮用Matlab实现一遍
Cox-de Boor递归公式:
Matlab实现B样条基函数,复现scipy官方文档其中这个递推公式分为0次和更高次,其中ti表示节点,对于k次的样条,至少需要k+1个系数,所以n≥k+1。
Matlab实现B样条基函数为:

function result =Base(x, k, i, t)
if k == 0
    if t(i) <= x && x < t(i+1)
        result = 1;
    else
        result=0;
    end
end

if t(i+k) == t(i)
    c1 = 0;
else
    c1 = (x - t(i))/(t(i+k) - t(i)) * Base(x, k-1, i, t);
end

if t(i+k+1) == t(i+1)
    c2 = 0;
else
    c2 = (t(i+k+1) - x)/(t(i+k+1) - t(i+1)) * Base(x, k-1, i+1, t);
result = c1 + c2;

end
上一篇:关于scipy的ImportError: cannot import name ‘imread‘问题解决方案


下一篇:NumPy模块