Matlab Bsplines

Matlab Bsplines,matlab,math,bspline,Matlab,Math,Bspline,我必须在MATLAB中重新实现B样条曲线(插值自然B样条曲线,第三次),但我在使B样条曲线自然化时遇到了一些问题(这意味着S“(a)=S”(B)=0,其中S是我在[a,B]中的插值函数)。这就是我到目前为止所做的: 它几乎可以工作了,但是插值开始的时间比预期的要晚我做错了什么?如何修复它?你所说的“插值开始的时间比预期的晚”是什么意思? function [ b ] = deBoore( p,i,x,y ) % p is the degree, i is the index of the bsp

我必须在MATLAB中重新实现B样条曲线(插值自然B样条曲线,第三次),但我在使B样条曲线自然化时遇到了一些问题(这意味着
S“(a)=S”(B)=0
,其中
S
是我在
[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
function [ sp ] = splineB( p, x, y, f )

m = length(y);
n = length(f);

sp = 0;

    for i=(1):(m-p-1)
       sp = sp + f(i)*deBoore(p,i,x,y);
    end

end