回 帖 发 新 帖 刷新版面

主题:求助meshgrid的使用方法

求助高手!我有一组向量[x,y,z],3行114列。x为纬度,y为经度,z为高度。如何使用meshgrid进行网格化,然后用surf绘立体图程序绘出立体图?

回复列表 (共10个回复)

沙发

比较适合做曲面拟合。若将数据贴上,可以试试。

板凳


118.818    32.054    -16
119.006    32.05    7.7
119.154    31.958    11.7
119.206    31.738    -5.8
119.021    31.652    -26.8
118.867    31.775    13.3
118.791    31.931    12.2
119.235    31.589    -16.8
119.305    31.476    -22.8
119.475    31.424    -56.8
119.302    32.07    6.7
119.405    32.189    -17.9
119.607    32.156    17.2
119.808    32.023    14.2
119.823    31.854    76.2
119.859    31.775    143.2
119.791    31.775    134.2
119.55    31.763    48.4
119.359    31.72    0.2
119.65    31.391    1.2
119.771    31.389    81
119.971    31.519    189.7
119.951    31.677    189.7
120.143    31.519    25.7
120.287    31.537    102.7
120.437    31.434    280.7
120.259    31.259    102.7
120.637    31.156    2.7
120.585    30.974    5.7
120.36    30.859    39.7
120.09    30.839    -6.3
119.901    31.005    7.7
119.898    31.186    12.7
119.384    32.218    2.1
118.853    32.051    
119.374    32.226    33.1
118.74    32.24    -13
118.836    32.342    1
118.804    32.534    25
118.789    32.756    -9
118.774    32.974    -17
118.853    33.145    0
118.872    33.289    22
118.938    33.433    -24.5
119.089    33.59    61.5
119.134    33.503    25.3
119.301    33.235    -2.1
119.407    33.004    -24.1
119.426    32.784    18.9
119.503    32.526    19.9
119.419    32.373    23
119.169    32.291    23
118.984    32.323    -17
118.49    33.003    -5
118.372    33.104    -23
118.184    33.308    -17
118.203    33.468    8
118.29    33.62    20
118.384    33.772    27.2
118.678    33.69    32.5
118.889    33.703    74.5
118.271    33.958    30.3
118.484    34.04    16.3
118.671    34.086    4.3
118.743    34.17    35
118.902    34.203    38
119.036    34.2    1
119.241    34.293    -45
119.217    34.107    0
119.124    33.956    -2.5
119.061    33.797    46.5
118.134    33.891    34.3
117.952    33.906    41.3
117.74    33.991    17.3
117.574    34.036    31.3
117.373    34.137    10.3
117.189    34.235    10.3
117.392    34.326    23.3
117.625    34.42    7.3
117.876    34.538    68.3
118.11    34.537    63
118.343    34.524    37
118.336    34.368    7.3
118.35    34.203    34.3
118.575    34.593    11
118.823    34.667    23
119.044    34.709    4
119.239    34.639    0
119.238    34.475    -9
119.652    32.817    25.9
119.825    32.938    39.9
119.952    33.141    30.9
119.954    33.192    33.9
119.991    33.343    21.2
120.035    33.356    106.2
120.152    33.386    22.2
120.357    33.473    24.2
120.255    33.507    26.8
120.223    33.67    18.8
119.99    33.538    16.8
119.822    33.739    4.8
119.819    33.935    -8.2
119.642    33.826    4.9
119.451    33.635    8.9
119.238    33.525    -7.1
117.876    33.475    46
120.23    33.875    -25.3
120.253    34.074    1.7
120.086    34.149    -3.3
120.048    34.306    -4.3
119.811    34.375    2.7
119.766    34.233    -1.3
119.657    34.125    -15
119.443    34.287    -2
数据已经贴上,谢谢了!

3 楼

此数据的曲面比较复杂,很难找到简单的曲面函数将其拟合,或拟合效果不好。可采用另外的方法,不知能否合用?
先将数据在当前目录下存成data.dat文件,运行下列小程序:
clear all,clc
data=load('data.dat');
n=size(data,1);
x1=data(:,1);x2=data(:,2);y=data(:,3);
r1=max(x1)-min(x1);r2=max(x2)-min(x2);
y2=zeros(18);n2=zeros(18);
for l=1:n
    g1=ceil((x1(l)-min(x1)+.01)/r1*17);
    g2=ceil((x2(l)-min(x2)+.01)/r2*17);
    y2(g1,g2)=y2(g1,g2)+y(l);
    n2(g1,g2)=n2(g1,g2)+1;
end
for i=1:18
    for j=1:18
        if n2(i,j)==0
            n2(i,j)=1;
        end
    end
end
y2=y2./n2;
y3=fliplr(y2);
bar3(y3,.99)
axis tight
pause(2)
figure(2)
[x11 x22]=meshgrid(1:18);
x11=19-x11;x22=19-x22;
surf(x11,x22,y2)
axis tight
shading interp
alpha(.95)

4 楼

谢谢aslyd!图是能绘出来了,但不是我想象的那种图,不知为什么meshgrid不能对数据进行网格化?

5 楼

不太明白你说的网格化是何意?

6 楼

C:\Documents and Settings\nanjing\桌面\untitled.jpg
我要绘制的图是这样的。

7 楼

无法显示图形。

8 楼

怎么将图形复制到回复内容中来?

9 楼

z=peaks(25);
mesh(z);
colormap(hsv)
与用以上程序绘出来的图形类似。

10 楼

我的程序中figure(2)的图形即是,你可将surf换成mesh即可,也可把shading interp去掉。显然,他们所表示的内容有一定的异同点。

我来回复

您尚未登录,请登录后再回复。点此登录或注册