24小时热门版块排行榜    

查看: 1655  |  回复: 4
【奖励】 本帖被评价2次,作者anyuezhiji增加金币 1
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

[资源] 【原创】三次样条插值绘出数字地图

下面是代码:
引用回帖:
%三次样条插值生成地图

%%PSL@CSU
%%QQ:547423688
%%Email:anyuezhiji@qq.com
%%Edit @ 2008.8.11

clear;clc;
A=[...
0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
20 0.2 0.2 0.2 0.2 0.2 0.2 0.4 0.4 0.3 0.2 0.3 0.2 0.1 0.2 0.2 0.4 0.3 0.2 0.2 0.2 0.2
19 0.3 0.2 0.2 0.2 0.2 0.4 0.3 0.3 0.3 0.3 0.4 0.2 0.2 0.2 0.2 0.4 0.4 0.4 0.3 0.2 0.2
18 0.2 0.3 0.3 0.2 0.3 1 0.4 0.5 0.3 0.3 0.3 0.3 0.2 0.2 0.2 0.6 0.5 0.4 0.4 0.2 0.2
17 0.2 0.2 0.4 0.2 1 1.1 0.9 0.4 0.3 0.3 0.5 0.3 0.2 0.2 0.2 0.7 0.3 0.6 0.6 0.3 0.4
16 0.2 0.2 0.9 0.7 1 1 1 0.7 0.5 0.3 0.2 0.2 0.2 0.6 0.2 0.8 0.7 0.9 0.5 0.5 0.4
15 0.2 0.3 1 1 1 1.2 1 1.1 0.8 0.3 0.2 0.2 0.2 0.5 0.3 0.6 0.6 0.8 0.7 0.6 0.5
14 0.2 0.4 1 1 1.1 1.1 1.1 1.1 0.6 0.3 0.4 0.4 0.2 0.7 0.5 0.9 0.7 0.4 0.9 0.8 0.3
13 0.2 0.2 0.9 1.1 1.2 1.2 1.1 1.1 0.6 0.3 0.5 0.3 0.2 0.4 0.3 0.7 1 0.7 1.2 0.8 0.4
12 0.2 0.3 0.4 0.9 1.1 1 1.1 1.1 0.7 0.4 0.4 0.4 0.3 0.5 0.5 0.8 1.1 0.8 1.1 0.9 0.3
11 0.3 0.3 0.5 1.2 1.2 1.1 1 1.2 0.9 0.5 0.6 0.4 0.6 0.6 0.3 0.6 1.2 0.8 1 0.8 0.5
10 0.3 0.5 0.9 1.1 1.1 1 1.2 1 0.8 0.7 0.5 0.6 0.4 0.5 0.4 1 1.3 0.9 0.9 1 0.8
9 0.3 0.5 0.6 1.1 1.2 1 1 1.1 0.9 0.4 0.4 0.5 0.5 0.8 0.6 0.9 1 0.5 0.8 0.8 0.9
8 0.4 0.5 0.4 1 1.1 1.2 1 0.9 0.7 0.5 0.6 0.3 0.6 0.4 0.6 1 1 0.6 0.9 1 0.7
7 0.3 0.5 0.8 1.1 1.1 1 0.8 0.7 0.7 0.4 0.5 0.4 0.4 0.5 0.4 1.1 1.3 0.7 1 0.7 0.6
6 0.3 0.5 0.9 1.1 1 0.7 0.7 0.4 0.6 0.4 0.4 0.3 0.5 0.5 0.3 0.9 1.2 0.8 1 0.8 0.4
5 0.2 0.3 0.6 0.9 0.8 0.8 0.6 0.3 0.4 0.5 0.4 0.5 0.4 0.2 0.5 0.5 1.3 0.6 1 0.9 0.3
4 0.2 0.3 0.3 0.7 0.6 0.6 0.4 0.2 0.3 0.5 0.8 0.8 0.3 0.2 0.2 0.8 1.3 0.9 0.8 0.8 0.4
3 0.2 0.3 0.3 0.6 0.3 0.4 0.3 0.2 0.2 0.3 0.6 0.4 0.3 0.2 0.4 0.3 0.8 0.6 0.7 0.4 0.4
2 0.2 0.3 0.4 0.4 0.2 0.2 0.2 0.3 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.5 0.7 0.4 0.4 0.3 0.3
1 0.2 0.2 0.3 0.2 0.2 0.3 0.2 0.2 0.2 0.2 0.2 0.1 0.2 0.4 0.3 0.6 0.5 0.3 0.3 0.3 0.2
0 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.4 0.7 0.4 0.2 0.4 0.5 0.3];



z=A(2:end,2:end);
[x,y]=meshgrid(0:20,0:20);
z=flipud(z);
figure;
surf(x,y,z);
xlabel('x');
[X,Y]=meshgrid(0:0.3:20,0:0.3:20);
Z=interp2(x,y,z,X,Y,'spline');
figure;
surf(X,Y,Z);




H=z;
H=H+0.1;
l=1;

while(l~=0)
l=0;
for i=1:size(H)
    for j=1:size(H)-1
        if atan(H(i,j)-H(i,j+1))>pi/5
            H(i,j+1)= H(i,j)-tan(pi/5);
            l=l+1;
        end
        if atan(H(i,j)-H(i,j+1))
            H(i,j)=H(i,j+1)-tan(pi/5);
            l=l+1;
        end  
    end
end
for j=1:size(H)
    for i=1:size(H)-1
        if atan(H(i,j)-H(i+1,j))>pi/5
            H(i+1,j)=H(i,j)-tan(pi/5);
            l=l+1;
        end
        if atan(H(i,j)-H(i+1,j))
            H(i,j)=H(i+1,j)-tan(pi/5);
            l=l+1;
        end  
    end
end   
end
% figure
% surf(x,y,H);
figure
Z=interp2(x,y,H,X,Y,'spline');
surf(X,Y,Z)

插值前




插值后



坡度太陡的地方人为增加高度

回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijinfeng042

木虫 (小有名气)


★★★ 三星级,支持鼓励

要是能给出那道题目就更好了,毕竟一堆数据没有说明也乱了些 我记得是某一年的建模题吧~呵呵,似曾相识啊
3楼2010-06-04 15:51:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 5 个回答

wangqian511

铁虫 (小有名气)


挺有意思,不错,尝试尝试
2楼2010-04-18 10:48:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

rns521

金虫 (正式写手)


引用回帖:
71252楼: Originally posted by anyuezhiji at 2010-04-18 02:16:43:
下面是代码:




插值前

http://pic.muchong.com/201004/18/943880_2010418021523.jpg


插值后

http://pic.muchong.com/201004/18/943880_2010418021548.jpg

坡度太陡的地方人为增加高度

http: ...

楼主你的程序是不是有问题,运行不出来啊
5楼2012-04-11 18:32:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
☆ 无星级 ★ 一星级 ★★★ 三星级 ★★★★★ 五星级
普通表情 高级回复(可上传附件)
信息提示
请填处理意见