想要画三维图,得到网格坐标非常重要,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)
这样一个三维图形就已经画好了,本质上也就是将二维坐标与第三维坐标结合形成三维坐标,然后连线,填充生成曲面。
我的公众号:简单编程之旅
欢迎关注!