网格数据生成函数meshgrid

想要画三维图,得到网格坐标非常重要,matlab提供了一个叫做meshgrid的函数,很容易就可根据参数生成网格化坐标,当然,这些网格化坐标是以一种特定的计算方法生成的。

语法:

[X,Y] = meshgrid(x,y)

[X,Y] = meshgrid(x)

说明:在这里第一种方式,x,y都是向量,而生成的X,Y则是矩阵。其中X的每一行是由x中的数按顺序构成,Y的每一列由y中的数按顺序构成

第二种方式本质上是x与y相等情况下的一种简写。

来看一些例子:

>> x=1:4

x =

1     2     3    4

>> y=1:5

y =

1     2     3    4     5

>> [X,Y]=meshgrid(x,y)

X =

1     2     3    4

1     2     3    4

1     2     3    4

1     2     3    4

1     2     3    4

Y =

1     1     1    1

2     2     2    2

3     3     3    3

4     4     4    4

5     5     5    5

可以看出,生成的X,Y维数相同,相同位置数据构成一组数(坐标),这样就构成了一个网格。

当然,还有另一种网格数据生成方式,

>> x=1:4

x =

1     2     3    4

>> y=(1:5)'   

y =

1

2

3

4

5

>> X=ones(size(y))*x

X =

1     2     3    4

1     2     3    4

1     2     3    4

1     2     3    4

1     2     3    4

>> Y=y*ones(size(x))

Y =

1    1     1     1

2     2     2    2

3     3     3    3

4     4     4    4

5     5     5    5

两种方式结果相同,当然,meshgrid函数要复杂得多,有兴趣的可以在matlab命令行输入edit meshgrid,打开meshgrid函数看看。得到网格数据之后,那么便可进行三维图形绘制了。

>> Z=X.^2+Y

Z =

2     5    10   17

3     6    11   18

4     7    12   19

5     8    13   20

6     9    14   21

>> surf(X,Y,Z)

网格数据生成函数meshgrid_第1张图片

这样一个三维图形就已经画好了,本质上也就是将二维坐标与第三维坐标结合形成三维坐标,然后连线,填充生成曲面。

我的公众号:简单编程之旅

欢迎关注!

 

你可能感兴趣的:(matlab知识点总结,python,matlab,java)