# findm

Latitudes and longitudes of nonzero data grid elements

## Syntax

```[lat,lon] = findm(Z,R) [lat,lon] = findm(latz,lonz,Z) [lat,lon,val] = findm(...) mat = findm(...) ```

## Description

`[lat,lon] = findm(Z,R)` computes the latitudes and longitudes of the nonzero elements of a regular data grid, `Z`. Specify `R` as a `GeographicCellsReference` or `GeographicPostingsReference` object. The `RasterSize` property of `R` must be consistent with `size(Z)`.

`[lat,lon] = findm(latz,lonz,Z)` returns the latitudes and longitudes of the nonzero elements of a geolocated data grid `Z`, which is an M-by-N logical or numeric array. Typically `latz` and `lonz` are M-by-N latitude-longitude arrays, but `latz` may be a latitude vector of length M and `lonz` may be a longitude vector of length N.

`[lat,lon,val] = findm(...)` returns the values of the nonzero elements of `Z`, in addition to their locations.

`mat = findm(...)` returns a single output, where` mat = [lat lon]`.

This function works in two modes: with a regular data grid and with a geolocated data grid.

## Examples

The data grid can be the result of a logical operation. For example, load elevation raster data and a geographic cells reference object. Then, find all locations with elevations greater than 5500 meters.

```load topo60c [lat,lon] = findm((topo60c > 5500),topo60cR); [lat lon]```
```ans = 34.5000 79.5000 34.5000 80.5000 30.5000 84.5000 28.5000 86.5000```

These points are in the Himalayas. Find the grid values at these locations using the `geographicToDiscrete` and `sub2ind` functions.

```[row,col] = geographicToDiscrete(topo60cR,lat,lon); indx = sub2ind(size(topo60c),row,col); heights = topo60c(indx)```
```heights = 5559 5515 5523 5731```

## Version History

Introduced before R2006a

expand all