RectGrid#

class acoular.grids.RectGrid

Bases: Grid

Provides a 2D Cartesian grid for beamforming results.

This grid is composed of square or nearly square cells and lies on a plane perpendicular to the z-axis. It is defined by the lower and upper x- and y-limits and a constant z-coordinate.

x_min

The lower x-limit that defines the grid. Default is -1.

x_max

The upper x-limit that defines the grid. Default is 1.

y_min

The lower y-limit that defines the grid. Default is -1.

y_max

The upper y-limit that defines the grid. Default is 1.

z

The constant z-coordinate of the grid plane. Default is 1.0.

increment

The side length of each cell. Default is 0.1.

nxsteps

Number of grid points along x-axis. (read-only)

nysteps

Number of grid points along y-axis. (read-only)

extent

The grid’s extension in matplotlib.pyplot.imshow compatible form. (read-only)

digest

A unique identifier for the grid, based on its properties. (read-only)

index(x, y)

Find the indices of a grid point near a given coordinate.

Parameters:
xfloat

The x coordinate of interest.

yfloat

The y coordinate of interest.

Returns:
tuple of ints

Indices corresponding to the nearest grid point.

Raises:
ValueError

If the coordinates are outside the grid boundaries.

indices(*r)

Find the indices of a subdomain in the grid.

Supports rectangular, circular, and polygonal subdomains.

Parameters:
rtuple of floats
Defines the subdomain shape and dimensions:
  • If 3 values are provided: center (x1, y1) and radius r2 define a circle.

  • If 4 values are provided: corners (x1, y1) and (x2, y2) define a rectangle.

  • If more than 4 values are provided: vertices (xn, yn) define a polygon.

Returns:
tuple

A 2-tuple of indices or slices corresponding to the subdomain.

export_gpos(filename)

Export the grid positions to an XML file.

This method generates an XML file containing the positions of all grid points. Each point is represented by a <pos> element with Name, x, y, and z attributes. The generated XML is formatted to match the structure required for importing into the ImportGrid class.

Parameters:
filenamestr

The path to the file to which the grid positions will be written. The file extension must be .xml.

Raises:
OSError

If the file cannot be written due to permissions issues or invalid file paths.

Notes

  • The file will be saved in UTF-8 encoding.

  • The Name attribute for each point is set as "Point {i+1}", where i is the index of the grid point.

  • If subgrids are defined, they will be included as the subgrid attribute.

Examples

Export a grid with 100 points to an XML file:

>>> import acoular as ac
>>> import numpy as np
>>> grid = ac.ImportGrid()
>>> # Create some grid points
>>> points = np.arange(9).reshape(3, 3)
>>> grid.pos = points
>>> grid.export_gpos('grid_points.xml')

The generated grid_points.xml file will look like this:

<?xml version="1.1" encoding="utf-8"?><Grid name="grid_points">
  <pos Name="Point 1" x="0" y="1" z="2"/>
  <pos Name="Point 2" x="3" y="4" z="5"/>
  <pos Name="Point 3" x="6" y="7" z="8"/>
</Grid>
subdomain(sector)

Return the indices for a subdomain in the grid.

Allows arbitrary subdomains of type Sector.

Parameters:
sectorSector object

Sector describing the subdomain.

Returns:
tuple

A 2-tuple of arrays of integers or numpy.s_ objects that can be used to mask or select the specified subdomain from a grid-shaped array.

Notes

The numpy.where() method is used to determine the the indices.

size

The total number of grid points. This property is automatically calculated based on other defining attributes of the grid. (read-only)

shape

The shape of the grid, represented as a tuple. Primarily useful for Cartesian grids. (read-only)

pos

The grid positions represented as a (3, size) array of floats. (read-only) All positions’ coordinates are in meters by default (see here).