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

偶然看到Python上有B样条基函数,心血来潮用Matlab实现一遍
Cox-de Boor递归公式:
在这里插入图片描述其中这个递推公式分为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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值