加载中…
个人资料
blue_ocean
blue_ocean
  • 博客等级:
  • 博客积分:0
  • 博客访问:8,506
  • 关注人气:139
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

一维cressman插值

(2015-12-18 12:31:39)
标签:

cressman插值

分类: matlab

 

http://s1/mw690/003cvAxDzy6XRJZMS0E70&690
取5个独立点,独立点间距离为9,取影响半径也为9,程序如下:

clear
clc
d=zeros(1,5);
w=zeros(36,5);
r=zeros(36,5);
y_cressman=zeros(1,36);
y_real=zeros(1,36);
% ABCDE五点
d(1)=1+0.5*cos(pi/18*0);
d(2)=1+0.5*cos(pi/18*9);
d(3)=1+0.5*cos(pi/18*18);
d(4)=1+0.5*cos(pi/18*27);
d(5)=1+0.5*cos(pi/18*36);
R=9.0; %插值半径
for t=1:36
    for i=1:5
        if i==1
            r(t,i)=abs(t);
        else
            r(t,i)=abs(t-9.0*(i-1));
               
        end
        w(t,i)=(R^2-r(t,i)^2)/(R^2+r(t,i)^2);
        if r(t,i)>R
            w(t,i)=0;
        end
    end
end
for t=1:36
    for i=1:5
        f(t,i)=w(t,i)/sum(w(t,:));
    end
end
x=1:36;
y_real=1+0.5*cos(pi/18*x);
for t=1:36
    for i=1:5
    y_cressman(t)=y_cressman(t)+f(t,i)*d(i)
    end
end
plot(x,y_real,x,y_cressman,'-r*')

结果如下图所示:非常接近线性插值
http://s6/mw690/003cvAxDzy6XRJZPfuZ15&690

将影响半径改为8.7,结果如下图所示:直线变得弯曲了,误差变大了。可以证明:当影响半径越接近独立点间距离时,误差越小。

http://s7/mw690/003cvAxDzy6XRK06MT4e6&690

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有