Matlab Bsplines

时间:2012-06-11 16:14:23

标签: matlab math bspline

我必须在MATLAB中重新实现B样条(插入自然B样条,3度),但我有一些问题使B样条自然(这意味着S"(a) = S"(b) = 0其中{{1}是S中的插值函数。这就是我到目前为止实施的De Boor's algorithm

[a,b]

所以,这应该可以正常工作,但我必须建立插值多项式看起来像这样:

function [ b ] = deBoore( p,i,x,y )
% p is the degree, i is the index of the bspline
n = length(x);

    if p==0
        b = zeros(1,n);
        for j=1:n
            if y(i)<=x(j) && x(j)<y(i+1)
                b(j) = 1;
            end
        end
    else

       b = (((x-y(i))/(y(i+p)-y(i))).*deBoore(p-1,i,x,y)) ...
           + (((y(i+p+1)-x)/(y(i+p+1)-y(i+1))).*deBoore(p-1,i+1,x,y));
    end

end

它几乎正常工作,但它就像插值开始的时间晚了它应该开始。 我做错了什么以及如何解决?

0 个答案:

没有答案