matlab 画三维地形图
如何用MATLAB画三维地形图???具体一些,还有导入数据的要求和格式也提供一下,谢谢!email:gb1701@126.com...
如何用MATLAB画三维地形图???
具体一些,还有导入数据的要求和格式也提供一下,谢谢!
email:gb1701@126.com 展开
具体一些,还有导入数据的要求和格式也提供一下,谢谢!
email:gb1701@126.com 展开
3个回答
展开全部
帮你搜索到一个好的:
function [data]=SquareDiamond(N,initvalue)
%输入N为:方阵的维数2^N+1,在方阵的四个角的顶点上放置的初值,
%这里定为四个初值一样
% Example:
% tic;
% d=SquareDiamond(8,5);
% colormap(gray); %设置渲染的颜色
% surf(d); %画出三维曲面
% shading flat; %各小曲面之间不要网格
% toc %测试运行时间
n=2^N;
data=zeros(n+1);
data(1,1)=initvalue;
data(1,n+1)=initvalue;
data(n+1,1)=initvalue;
data(n+1,n+1)=initvalue;
data=mytry(data,n,0.3,n);
function [x]=rnd(absvalue)
%扩展的随机函数生成器,产生绝对值小于absvalue的随机实数
x=(rand(1)-0.5)*2*absvalue;
function [data]=mytry(data,m,r,n)
%square=========================================
%x-------x
%---------
%-- 0 -- 由四个x定中间的0
%---------
%x-------x
for i=1:m:n
for j=1:m:n
data((i+i+m)/2,(j+j+m)/2)=(data(i,j)+data(i,j+m)+data(i+m,j)+data(i+m,j+m))/4+rnd(r);
end
end
%diamond========================================
%----x--
%-----
%x- 0 -x 由四个x定中间的0
%--------
%----x---
%钻石步骤的横向部分
%line No.1
for j=1+m/2:m:n
data(1,j)=(data(1,j+m/2)+data(1+m/2,j)+data(1,j-m/2)+data(n+1-m/2,j))/4+rnd(r);
end
%middle
for i=1+m:m:n
for j=1+m/2:m:n
data(i,j)=(data(i,j+m/2)+data(i+m/2,j)+data(i,j-m/2)+data(i-m/2,j))/4+rnd(r);
end
end
%line last
for j=1+m/2:m:n
data(n+1,j)=(data(n+1,j+m/2)+data(1+m/2,j)+data(n+1,j-m/2)+data(n+1-m/2,j))/4+rnd(r);
end
%钻石步骤的纵向部分
%line No.1
for i=1+m/2:m:n
data(i,1)=(data(i,1+m/2)+data(i+m/2,1)+data(i,n+1-m/2)+data(i-m/2,1))/4+rnd(r);
end
%middle
for i=1+m/2:m:n
for j=1+m:m:n
data(i,j)=(data(i,j+m/2)+data(i+m/2,j)+data(i,j-m/2)+data(i-m/2,j))/4+rnd(r);
end
end
% line last
for i=1+m/2:m:n
data(i,n+1)=(data(i,1+m/2)+data(i+m/2,n+1)+data(i,n+1-m/2)+data(i-m/2,n+1))/4+rnd(r);
end
if (m>2)
data=mytry(data,m/2,r/2,n); %递归
end
function [data]=SquareDiamond(N,initvalue)
%输入N为:方阵的维数2^N+1,在方阵的四个角的顶点上放置的初值,
%这里定为四个初值一样
% Example:
% tic;
% d=SquareDiamond(8,5);
% colormap(gray); %设置渲染的颜色
% surf(d); %画出三维曲面
% shading flat; %各小曲面之间不要网格
% toc %测试运行时间
n=2^N;
data=zeros(n+1);
data(1,1)=initvalue;
data(1,n+1)=initvalue;
data(n+1,1)=initvalue;
data(n+1,n+1)=initvalue;
data=mytry(data,n,0.3,n);
function [x]=rnd(absvalue)
%扩展的随机函数生成器,产生绝对值小于absvalue的随机实数
x=(rand(1)-0.5)*2*absvalue;
function [data]=mytry(data,m,r,n)
%square=========================================
%x-------x
%---------
%-- 0 -- 由四个x定中间的0
%---------
%x-------x
for i=1:m:n
for j=1:m:n
data((i+i+m)/2,(j+j+m)/2)=(data(i,j)+data(i,j+m)+data(i+m,j)+data(i+m,j+m))/4+rnd(r);
end
end
%diamond========================================
%----x--
%-----
%x- 0 -x 由四个x定中间的0
%--------
%----x---
%钻石步骤的横向部分
%line No.1
for j=1+m/2:m:n
data(1,j)=(data(1,j+m/2)+data(1+m/2,j)+data(1,j-m/2)+data(n+1-m/2,j))/4+rnd(r);
end
%middle
for i=1+m:m:n
for j=1+m/2:m:n
data(i,j)=(data(i,j+m/2)+data(i+m/2,j)+data(i,j-m/2)+data(i-m/2,j))/4+rnd(r);
end
end
%line last
for j=1+m/2:m:n
data(n+1,j)=(data(n+1,j+m/2)+data(1+m/2,j)+data(n+1,j-m/2)+data(n+1-m/2,j))/4+rnd(r);
end
%钻石步骤的纵向部分
%line No.1
for i=1+m/2:m:n
data(i,1)=(data(i,1+m/2)+data(i+m/2,1)+data(i,n+1-m/2)+data(i-m/2,1))/4+rnd(r);
end
%middle
for i=1+m/2:m:n
for j=1+m:m:n
data(i,j)=(data(i,j+m/2)+data(i+m/2,j)+data(i,j-m/2)+data(i-m/2,j))/4+rnd(r);
end
end
% line last
for i=1+m/2:m:n
data(i,n+1)=(data(i,1+m/2)+data(i+m/2,n+1)+data(i,n+1-m/2)+data(i-m/2,n+1))/4+rnd(r);
end
if (m>2)
data=mytry(data,m/2,r/2,n); %递归
end
展开全部
peaks,surf,surfc函数
关于数据导入,一般是excel
你可以用xlsread函数读取数据
具体使用方法你可以用help语句查询
关于数据导入,一般是excel
你可以用xlsread函数读取数据
具体使用方法你可以用help语句查询
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
matlab中提供了直接的map工具箱
在matlab命令窗口输入mapview就可以直接调出GUI处理界面
在matlab命令窗口输入mapview就可以直接调出GUI处理界面
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询