chzh.m

来自「de Boor 求值算法求作二次和三次B-样条插值曲线」· M 代码 · 共 29 行

M
29
字号
function Dx=CHZH(n,k,x,u)
%反算插值曲线的控制顶点
%%该算法取两端点节点重度r=k,即首末控制点就是首末数据点
for i=1:n+2*k-3
    deta(i)=u(i+1)-u(i);
end
COE=zeros(n+k-3,n+k-3);                            %%系数矩阵
COE(1,1)=1;COE(n+k-3,n+k-3)=1;
for i=2:n+k-4
    j=i-1;
    COE(i,j)=deta(i+2)^2/(deta(i)+deta(i+1)+deta(i+2));
    COE(i,j+1)=(deta(i+2)*(deta(i)+deta(i+1)))/(deta(i)+deta(i+1)+deta(i+2))...
        +(deta(i+1)*(deta(i+2)+deta(i+3)))/(deta(i+1)+deta(i+2)+deta(i+3));
    COE(i,j+2)=deta(i+1)^2/(deta(i+1)+deta(i+2)+deta(i+3));
end

Ex=zeros(n+k-3,1);
Ex(1,1)=x(1)+deta(3)/3;Ex(n+k-3)=x(n+k-3);              %%使用边界条件
for i=2:n+k-4
    Ex(i,1)=(deta(i+1)+deta(i+2))*x(i);
end

Dmx=inv(COE)*Ex;                                %%计算得未知控制点

Dx=zeros(1,n+k-1);                                          
Dx(1)=x(1);Dx(n+k-1)=x(n);
for i=2:n+k-2
   Dx(i)=Dmx(i-1,1);
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?