python笔记之NUMPY中的meshgrid()——生成以某点为中心指定半径内的

来源:互联网 发布:小额贷款业务软件 编辑:程序博客网 时间:2024/04/30 04:16

1、meshgrid函数用两个坐标轴上的点在平面上画格。

用法:
  [X,Y]=meshgrid(x,y)
  [X,Y]=meshgrid(x)与[X,Y]=meshgrid(x,x)是等同的
  [X,Y,Z]=meshgrid(x,y,z)生成三维数组,可用来计算三变量的函数和绘制三维立体图
  例如例题1:
  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

附注:例题中meshgrid(-3:1:3,-2:1:2);因为-3:1:3产生的是含有7个数字的行向量;-2:1:2产生的是含有5个数字的行向量。所以该命令的结果是产生5*7的矩阵(X,Y都是5*7的矩阵;其中X是由第一个含7个元素的行向量产生,Y是由第二个行向量产生)

 

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

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

 
   语法:

  [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

例如:axis off;
x=-2:.2:2;
y=-1:.2:3;
[xx,yy]=meshgrid(x,y);
zz=100*(yy-xx.^2).^2+(1-xx).^2;
surfc(xx,yy,zz);(三维图)

meshgrid函数



一个列子:

import numpy

all_points = numpy.random.random((1000, 1000))  # Input array

# Size of your array of points all_points:
(image_size_x, image_size_y) = all_points.shape

# Disk definition:
(center_x, center_y) = (500, 500)
radius = 10

x_grid, y_grid = numpy.meshgrid(numpy.arange(image_size_x), numpy.arange(image_size_y)) ————生成了(x, y)二维格网
                               
# Array of booleans with the disk shape
disk = ((x_grid-center_x)**2 + (y_grid-center_y)**2) <= radius**2  ————disk 是距离中心格网点(center_x, center_y)  小于等于 radius**2(x, y)

# You can now do all sorts of things with the mask "disk":

# For instance, the following array has only 317 points (about pi*radius**2):
points_in_disk = all_points[disk]

# You can also use masked arrays:
points_in_circle2 = numpy.ma.masked_array(all_points, ~disk)  ————数据掩膜处理

from matplotlib import pyplot
pyplot.imshow(points_in_circle2)  -----------matplotlib中使用imshow绘制二维图
0 0