这个函数很方便。在matlab的环境下,这种交互式的画图方式很节约时间。不过如果对surf函数作图的一些细节不去了解清楚的话,可能会导致一些错误,一下是我使用时的一些总结:
假
设有两列数X[N],Y[N],等间隔,以此可以弄出一个二维的格子,格子上每点的坐标就是(x,y),然后对每一个点赋予一个(函数)值,其实就是定义
了一个2维的数组,记作A[N][N]。matlab数组的index顺序和c语言的一样,在此就不说了。这里我给A赋值的时候A的第一维对应X,第二维
对应Y。调用surf函数画图的时候,输入如下命令:
surf(X,Y,A)
但是这样画出来的图并不是正确的。why???
经
过几次尝试以后,我发现,可以这么去理解:surf函数画出来的图中对应的每一点的(x,y)都是从(X,Y)中取出来的,每次都是先取X中的一个数,而
Y则是暂时固定住的。但是每次从A中取出一个元素的时候,却是顺序着取的,也就是按照最初赋值的顺序,这样,每次都是Y维的指标先变化。由此一来,每次取
出的(x,y)和A并不是真正一一对应的,但是画图时只要稍微变一下即可:
surf(X,Y,A')
A'表示A的转置,这样取坐标跟取A的顺序就一致了。
转发至微博
转发至微博