1. Home
  2. ADDJACENT CELLS procedure

ADDJACENT CELLS procedure

Finds cells adjacent to other cells in a multi-dimensional array (R.W. Payne).

Options

ADJACENTINDEXES = pointer Pointer containing a variate for each cell, giving the indexes of its adjacent cells
DIAGONALS = string token Whether to include diagonal cells (include, exclude); default incl
DISTANCE = scalar Maximum distance between cells and adjacent cells; default 1

Parameters

DIMENSION = scalars Dimensions of the array
CELLS = variates Locations of the cells in each dimension
ADJACENTCELLS = pointers The pointer for each DIMENSION contains a variate for each cell with the locations of its adjacent cells in that dimension

Description

ADJACENTCELLS finds the cells that are adjacent to cells in a multi-dimensional array. The DISTANCE option specifies how close the cells need to be for them to be classed as adjacent. The default of one indicates that they must be alongside each other. A setting of two means that there can be an intervening cell, and so on. The default is to include cells that are diagonal to each other, but you can set option DIAGONALS=exclude to exclude these.

The DIMENSION parameter supplies a list of scalars defining the dimensions of the array (i.e. the number of cells in each direction). The CELLS parameter supplies a list of variates giving the locations of the cells in each dimension.

The adjacent cells can be saved in two different ways. The ADJACENTCELLS parameter can supply a list of pointers, one for each dimension. These contain a variate for each cell, containing the locations of its adjacent cells in that dimension. Alternatively, the ADJACENTINDEXES option can save pointer containing a variate for each cell. This saves the indexes of the adjacent cells for that cell. (These indexes are defined as the locations of the cells within a multi-way table classified by factors representing the dimensions.)

Options: ADJACENTINDEXES, DIAGONALS, DISTANCE.
Parameters: DIMENSION, CELLS, ADJACENTCELLS.

See also

Procedure: NEIGHBOURS.
Commands for: Spatial statistics.

Example

CAPTION       'ADJACENTCELLS example'; STYLE=meta
VARIATE       [VALUES=1,1,2,2] x
&             [VALUES=2,3,3,4] y
&             [VALUES=5,3,4,3] z
ADJACENTCELLS [ADJACENTINDEXES=index] 2,4,5; CELLS=x,y,z; ADJACENTCELLS=ax,ay,az

FACTOR        [NVALUES=40; LEVELS=2] fx
&             [LEVELS=4] fy
&             [LEVELS=5] fz
GENERATE      fx,fy,fz

" details of the cells adjacent to each original cell "
FOR           [INDEX=i; NTIMES=4]
  SCALAR      xcell,ycell,zcell; VALUE=x$[i],y$[i],z$[i]
  " print the coordinates of the cells "
  CAPTION     'Cell'
  PRINT       xcell,ycell,zcell; FIELD=8; DECIMALS=0
  " print the coordinates of its adjacent cells "
  CAPTION     'Adjacent cells'
  PRINT       ax[i],ay[i],az[i]; FIELD=8; DECIMALS=0
  " show the locations of the adjacent cells, using a 3-way table "
  VARIATE     [NVALUES=40] tvals
  CALCULATE   icell = (xcell-1)*4*5 + (ycell-1)*5 + zcell
  &           tvals$[icell] = 1
  &           tvals$[index[i]] = 2
  TABLE       [CLASS=fx,fy,fz] tab; VALUES=tvals
  CAPTION     'Cell locations'
  PRINT       [RLWIDTH=6; VSPECIAL=!(1,2); TSPECIAL=!t('cell','adj')]\
              tab; FIELD=6
ENDFOR
Updated on February 6, 2023

Was this article helpful?