Documentation |
Resize regular data grid
Z = resizem(Z1,scale)
Z = resizem(Z1,[numrows numcols])
[Z,R] = resizem(Z1,scale,R1)
[Z,R]
= resizem(Z1,[numrows numcols],R1)
[...] = resizem(..., method)
Z = resizem(Z1,scale) returns a regular data grid Z that is scale times the size of the input, Z1. resizem uses interpolation to resample to a new sample density/cell size. If scale is between 0 and 1, the size of Z is smaller than the size of Z1. If scale is greater than 1, the size of Z is larger. For example, if scale is 0.5, the number of rows and the number of columns will be halved. By default, resizem uses nearest neighbor interpolation.
Z = resizem(Z1,[numrows numcols]) resizes Z1 to have numrows rows and numcols columns. numrows and numcols must be positive whole numbers.
[Z,R] = resizem(Z1,scale,R1) or [Z,R] = resizem(Z1,[numrows numcols],R1) resizes a regular data grid that is spatially referenced by R1. R1 can be a referencing vector, a referencing matrix, or a geographic raster reference object.
If R1 is a geographic raster reference object, its RasterSize property must be consistent with size(Z1) and its RasterInterpretation must be 'cells'.
If R1 is a referencing vector, it must be a 1-by-3 with elements:
[cells/degree northern_latitude_limit western_longitude_limit]
If R1 is a referencing matrix, it must be 3-by-2 and transform raster row and column indices to/from geographic coordinates according to:
[lon lat] = [row col 1] * R1
If R1 is a referencing matrix, it must define a (non-rotational, non-skewed) relationship in which each column of the data grid falls along a meridian and each row falls along a parallel. The output R will be the same type as R1 (referencing object, vector, or matrix). If R1 is a referencing vector, the form [numrows numcols] is not supported and scale must be a scalar resizing factor.
[...] = resizem(..., method) resizes a regular data grid using one of the following three interpolation methods:
Method | Description |
---|---|
'nearest' | nearest neighbor interpolation (default) |
'bilinear' | bilinear interpolation |
'bicubic' | bicubic interpolation |
If the grid size is being reduced (scale is less than 1 or [numrows numcols] is less than the size of the input grid) and method is 'bilinear' or 'bicubic', resizem applies a low-pass filter before interpolation, to reduce aliasing. The default filter size is 11-by-11. You can specify a different length for the default filter using:
[...] = resizem(..., method, n)
n is an integer scalar specifying the size of the filter, which is n-by-n. If n is 0 or method is 'nearest', resizem omits the filtering step. You can also specify your own filter h using:
[...] = resizem(..., method, h)
h is any two-dimensional FIR filter (such as those returned by Image Processing Toolbox functions ftrans2, fwind1, fwind2, or fsamp2). If H is specified, filtering is applied even when method is 'nearest'.
Double the size of a grid then reduce it using different methods:
Z = [1 2; 3 4] Z = 1 2 3 4 neargrid = resizem(Z,2) neargrid = 1 1 2 2 1 1 2 2 3 3 4 4 3 3 4 4 bilingrid = resizem(Z,2,'bilinear') bilingrid = 1.0000 1.3333 1.6667 2.0000 1.6667 2.0000 2.3333 2.6667 2.3333 2.6667 3.0000 3.3333 3.0000 3.3333 3.6667 4.0000 bicubgrid = resizem(bilingrid,[3 2],'bicubic') bicubgrid = 0.7406 1.2994 1.6616 2.3462 1.9718 2.5306