现在的位置: 首页 > 综合 > 正文

meshgrid介绍

2013年10月19日 ⁄ 综合 ⁄ 共 1700字 ⁄ 字号 评论关闭

meshgrid是MATLAB中用于生成网格采样点的函数。在使用MATLAB进行3-D图形绘制方面有着广泛的应用。

函数简介

函数功能

  生成绘制3-D图形所需的网格数据。在计算机中进行绘图操作时, 往往需要一些采样点,然后根据这些采样点来绘制出整个图形。在进行3-D绘图操作时,涉及到x、y、z三组数据,而x、y这两组数据可以看做是在Oxy平面内对坐标进行采样得到的坐标对(x, y)。

  例如, 要在“3<=x<=5,6<=y<=9,z不限制区间” 这个区域内绘制一个3-D图形,如果只需要整数坐标为采样点的话。我们可能需要下面这样一个坐标构成的矩阵:

  (3,9),(4,9),(5,9);

  (3,8),(4,8),(5,8);

  (3,7),(4,7),(5,7);

  (3,6),(4,6),(5,6);

  在matlab中我们可以这样描述这个坐标矩阵:

  把各个点的x坐标独立出来,得:

  3,4,5;

  3,4,5;

  3,4,5;

  3,4,5;

  再把各个点的y坐标也独立出来:

  9,9,9;

  8,8,8;

  7,7,7;

  6,6,6;

  这样对应的x、y结合,便表示了上面的坐标矩阵。meshgrid就是产生这样两个矩阵,来简化我们的操作。然后根据(x, y)计算获得z,并绘制出三维图形。

  在Matlab命令窗口中键入type meshgrid可以查看该函数的源代码(由此可以理解meshgrid的算法思想), 键入doc meshgrid或者help meshgrid可以获得帮助文档。

语法

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

  上面的描述,我们可以知道,meshgrid返回的两个矩阵X、Y必定是行数、列数相等的,且X、Y的行数都等 于输入参数y中元素的总个数,X、Y的列数都等于输入参数x中元素总个数(这个结论可以通过查看meshgrid的源代码得到,可以通过示例程序得到验证)。

  [X,Y]=meshgrid(x)与[X,Y]=meshgrid(x,x)是等同的

  [X,Y,Z]=meshgrid(x,y,z)生成三维数组,可用来计算三变量的函数和绘制三维立体图

  相关函数: plot3、mesh、surf、automesh、ndgrid

程序示例

  示例一:

  x=-3:1:3;y=-2:1:2;

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

  这里meshigrid(x,y)的作用是产生一个以向量x为行,向量y为列的矩阵,而x是从-3开始到3,每间隔1记下一个数据,并把这些数据集成矩阵X;同理y则是从-2到2,每间隔1记下一个数据,并集成矩阵Y。即

  X=

  -3 -2 -1 0 1 2 3

  -3 -2 -1 0 1 2 3

  -3 -2 -1 0 1 2 3

  -3 -2 -1 0 1 2 3

  -3 -2 -1 0 1 2 3

  Y =

  -2 -2 -2 -2 -2 -2 -2

  -1 -1 -1 -1 -1 -1 -1

  0 0 0 0 0 0 0

  1 1 1 1 1 1 1

  2 2 2 2 2 2 2

  示例二:

  function main

  close all; clear; clc;

  M1; M2;

  end

  function M1

  x = rand(3, 4);

  y = rand(2, 3);

  size_of_x = size(x)

  size_of_y = size(y)

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

  size_of_X = size(X)

  size_of_Y = size(Y)

  end

  function M2

  x = rand(3, 4, 2);

  y = rand(2, 3);

  size_of_x = size(x)

  size_of_y = size(y)

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

  size_of_X = size(X)

  size_of_Y = size(Y)

  end

  输出结果:

  size_of_x =

  3 4

  size_of_y =

  2 3

  size_of_X =

  6 12

  size_of_Y =

  6 12

  size_of_x =

  3 4 2

  size_of_y =

  2 3

  size_of_X =

  6 24

  size_of_Y =

  6 24

抱歉!评论已关闭.