Main Content

rescale

Scale range of array elements

Description

example

R = rescale(X) scales the entries of X to the interval [0,1]. The output array R is the same size as X.

example

R = rescale(X,a,b) scales the entries of X to the interval [a,b].

example

R = rescale(___,Name,Value) specifies additional parameters for rescaling using one or more name-value arguments. For example, rescale(X,"InputMin",5) sets all elements in X that are less than 5 equal to 5 before scaling to the range [0,1].

Examples

collapse all

Scale the entries of a vector to the interval [0,1].

X = 1:5;
R = rescale(X)
R = 1×5

         0    0.2500    0.5000    0.7500    1.0000

Scale the elements of a vector to the interval [-1,1].

X = 1:5;
R = rescale(X,-1,1)
R = 1×5

   -1.0000   -0.5000         0    0.5000    1.0000

Scale each column of a matrix to the interval [0,1] by specifying the minimum and maximum of each column. rescale scales along the dimension of the input array that corresponds with the shape of the values of InputMin and InputMax.

X = magic(3)
X = 3×3

     8     1     6
     3     5     7
     4     9     2

colmin = min(X)
colmin = 1×3

     3     1     2

colmax = max(X)
colmax = 1×3

     8     9     7

Rcol = rescale(X,"InputMin",colmin,"InputMax",colmax)
Rcol = 3×3

    1.0000         0    0.8000
         0    0.5000    1.0000
    0.2000    1.0000         0

Scale each row of X to the interval [0,1].

rowmin = min(X,[],2)
rowmin = 3×1

     1
     3
     2

rowmax = max(X,[],2)
rowmax = 3×1

     8
     7
     9

Rrow = rescale(X,"InputMin",rowmin,"InputMax",rowmax)
Rrow = 3×3

    1.0000         0    0.7143
         0    0.5000    1.0000
    0.2857    1.0000         0

Input Arguments

collapse all

Input array, specified as a scalar, vector, matrix, or multidimensional array.

  • If X has type single, then the output also has type single. Otherwise, the output has type double.

  • If X is constant, then rescale returns the lower bound of the interval (0 by default) or NaN (when the specified interval contains Inf).

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Lower bound, specified as a scalar, vector, matrix, or multidimensional array. a must have a size that is compatible with the input array. For example, if X is an M-by-N matrix, then rescale operates along the dimension determined by the shape of a:

  • If a is a scalar, then rescale uses it as the lower bound for all elements of X.

  • If a is a 1-by-N row vector, then rescale uses each element as the lower bound for the corresponding column of X.

  • If a is an M-by-1 column vector, then rescale uses each element as the lower bound for the corresponding row of X.

For more information on compatible array sizes, see Compatible Array Sizes for Basic Operations.

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Upper bound, specified as a scalar, vector, matrix, or multidimensional array. b must have a size that is compatible with the input array. For example, if X is an M-by-N matrix, then rescale operates along the dimension determined by the shape of b:

  • If b is a scalar, then rescale uses it as the upper bound for all elements of X.

  • If b is a 1-by-N row vector, then rescale uses each element as the upper bound for the corresponding column of X.

  • If b is an M-by-1 column vector, then rescale uses each element as the upper bound for the corresponding row of X.

For more information on compatible array sizes, see Compatible Array Sizes for Basic Operations.

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Name-Value Arguments

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Before R2021a, use commas to separate each name and value, and enclose Name in quotes.

Example: B = rescale(A,"InputMin",5,"InputMax",10)

Minimum of input range, specified as a scalar, vector, matrix, or multidimensional array. The default value for an input array X is min(X(:)). Specifying an input range either expands or shrinks the range of the input data. For instance, rescale sets all elements that are less than the specified input minimum to the value of InputMin before scaling.

The value of InputMin must have a size that is compatible with the input array. For example, if X is an M-by-N matrix, then rescale operates along the dimension dictated by the shape of the input minimum:

  • If the input minimum is a scalar, then rescale uses that minimum value for all elements of X.

  • If the input minimum is a 1-by-N row vector, then rescale uses each element as the minimum for the corresponding column of X.

  • If the input minimum is an M-by-1 column vector, then rescale uses each element as the minimum for the corresponding row of X.

For more information on compatible array sizes, see Compatible Array Sizes for Basic Operations.

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Maximum of input range, specified as a scalar, vector, matrix, or multidimensional array. The default value for an input array X is max(X(:)). Specifying an input range either expands or shrinks the range of the input data. For instance, rescale sets all elements that are greater than the specified input maximum to the value of InputMax before scaling.

The value of InputMax must have a size that is compatible with the input array. For example, if X is an M-by-N matrix, then rescale operates along the dimension dictated by the shape of the input maximum:

  • If the input maximum is a scalar, then rescale uses that maximum value for all elements of X.

  • If the input maximum is a 1-by-N row vector, then rescale uses each element as the maximum for the corresponding column of X.

  • If the input maximum is an M-by-1 column vector, then rescale uses each element as the maximum for the corresponding row of X.

For more information on compatible array sizes, see Compatible Array Sizes for Basic Operations.

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Algorithms

R = rescale(X,a,b,"InputMin",inmin,"InputMax",inmax) uses the formula

l + [(X-inmin)./(inmax-inmin)].*(b-a)

to scale the elements of an array X when the values of X are within the bounds of inmin and inmax.

  • If a and b are not specified, then rescale uses the default values 0 and 1, respectively.

  • If InputMin is not specified, then rescale sets its value to the default min(X(:)).

  • If InputMax is not specified, then rescale sets its value to the default max(X(:)).

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Version History

Introduced in R2017b

See Also

Functions

Apps