matlab-畫地形圖


1.畫三維圖

之前畫曲面的三維圖,運用z=x2+y2 算出z和Z,如果是給出數據的地形則沒辦法用公式算,為此,引入插值自動造出地形的坐標。

擬合和插值的區別:插值是必須要過點,曲線可以不光滑;擬合則是可以不過點,曲線要光滑。

例如依舊畫出z=x2+y,但只給出固定點,插值出Z矩陣。

clc;
clear all;

x=[-3 -2 -1 0 1 2 3];
y=[-3 -2 -1 0 1 2 3];
z=[18 8 2 0 2 8 18];
xminn=min(x)
xmaxx=max(x)
yminn=min(y);
ymaxx=max(x);
zminn=min(z);
zmaxx=max(z);

[X,Y,Z]=griddata(x,y,z,linspace(xmaxx,xminn)',linspace(yminn,ymaxx),'v4');
%v4是一個插值,理解成自動造出Z矩陣即可,第4第5個需要其中一個轉置
surf(X,Y,Z)

 

再用公式法求Z看看畫出的圖對比是否相同

 

clear all;
clc;
x=-3:0.05:3;
y=-3:0.05:3;
z=x.^2 + y.^2;
[X,Y]=meshgrid(x,y);
Z=X.^2 + Y.^2;
surf(X,Y,Z);

 

顯然,畫出的圖形狀幾乎一樣,因為點與點的間距使得圖形有些不同,插值有很多種,v4插值適用,就用v4吧,可以嘗試其他插值是否得出想要的結果。

 

2.畫四維圖

除了長寬高,怎么可能畫得出其他維度,往往需要體現地形上的溫度、濃度等指標,這類“第四維度”一般用顏色體現出來。

clc
%手動導入表中數據后,對x、y、z、r賦值

x=one(:,1);
y=one(:,2);
z=one(:,3);%高度
r=one(:,11);%濃度

[X,Y,Z]=griddata(x,y,z,linspace(min(x),max(x))',linspace(min(y),max(y)),'v4');%插值,造出Z

variables=one(:,1:3);
F=TriScatteredInterp(variables,r,'linear');
R=F(X,Y,Z);
%以上3句,理解為造出R,這個R和前三個東西都有關系,插值用的是linear,此處不能用v4
surf(X,Y,Z,R)
title('4D');
colormapeditor %顏色編輯器,顏色較深可調色,嫌麻煩就隨便弄1,工具-標准顏色圖-hsv

為了體現“第四維度”,一般需要調出顏色條。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM