Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

rescale

数组元素的缩放范围

说明

示例

B = rescale(A) 将数组的条目缩放到区间 [0,1]。输出数组 B 的大小与 A 相同。

示例

B = rescale(A,l,u) 将数组的条目缩放到区间 [l,u]。

示例

B = rescale(___,Name,Value) 为上述任意语法指定缩放数组的其他参数。例如,rescale(A,'InputMin',5)A 中所有小于 5 的元素设置为等于 5,然后缩放到范围 [0,1]。

示例

全部折叠

将向量的条目缩放到区间 [0,1]。

A = 1:5;
B = rescale(A)
B = 1×5

         0    0.2500    0.5000    0.7500    1.0000

将向量的元素缩放到区间 [-1,1]。

A = 1:5;
B = rescale(A,-1,1)
B = 1×5

   -1.0000   -0.5000         0    0.5000    1.0000

通过指定每列的最小值和最大值,将矩阵的每一列缩放到区间 [0,1]。rescale 沿输入数组中与 'InputMin''InputMax' 参数值的形状对应的维度进行缩放。

A = magic(3)
A = 3×3

     8     1     6
     3     5     7
     4     9     2

colmin = min(A)
colmin = 1×3

     3     1     2

colmax = max(A)
colmax = 1×3

     8     9     7

Bcol = rescale(A,'InputMin',colmin,'InputMax',colmax)
Bcol = 3×3

    1.0000         0    0.8000
         0    0.5000    1.0000
    0.2000    1.0000         0

A 的每一行缩放到区间 [0,1]。

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

     1
     3
     2

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

     8
     7
     9

Brow = rescale(A,'InputMin',rowmin,'InputMax',rowmax)
Brow = 3×3

    1.0000         0    0.7143
         0    0.5000    1.0000
    0.2857    1.0000         0

输入参数

全部折叠

输入数组,指定为标量、向量、矩阵或多维数组。

  • 如果 A 的类型为 single,则输出的类型也是 single。否则,输出的类型为 double

  • 如果 A 是标量,则 rescale 返回区间的下界(默认为 0)或 NaN(当输出范围包含 Inf 时)。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

下界,指定为标量、向量、矩阵或多维数组。l 的大小必须与输入数组兼容。例如,如果 A 是 M×N 矩阵,则 rescale 沿 l 的形状指示的维度进行运算:

  • 如果 l 是标量,则 rescale 使用它作为 A 的所有元素的下界。

  • 如果 l 是 1×N 行向量,则 rescale 使用每个元素作为 A 的对应列的下界。

  • 如果 l 是 M×1 列向量,则 rescale 使用每个元素作为 A 的对应行的下界。

有关兼容的数组大小的详细信息,请参阅基本运算的兼容数组大小

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

上界,指定为标量、向量、矩阵或多维数组。u 的大小必须与输入数组兼容。例如,如果 A 是 M×N 矩阵,则 rescale 沿 u 的形状指示的维度进行运算:

  • 如果 u 是标量,则 rescale 使用它作为 A 的所有元素的上界。

  • 如果 u 是 1×N 行向量,则 rescale 使用每个元素作为 A 的对应列的上界。

  • 如果 u 是 M×1 列向量,则 rescale 使用每个元素作为 A 的对应行的上界。

有关兼容的数组大小的详细信息,请参阅基本运算的兼容数组大小

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

名称-值对组参数

指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须放在引号中。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN 所示。

示例: B = rescale(A,'InputMin',5,'InputMax',10)

输入范围的最小值,指定为标量、向量、矩阵或多维数组。输入数组 A 的默认值为 min(A(:))。指定输入范围将扩大或缩小输入数据的范围。例如,rescale 在缩放之前将所有小于指定输入最小值的元素设置为 'InputMin' 值。

'InputMin' 值的大小必须与输入数组兼容。例如,如果 A 是 M×N 矩阵,则 rescale 沿输入最小值的形状指示的维度进行运算:

  • 如果输入最小值是标量,则 rescale 使用它作为 A 的所有元素的最小值。

  • 如果输入最小值是 1×N 行向量,则 rescale 使用每个元素作为 A 的对应列的最小值。

  • 如果输入最小值是 M×1 列向量,则 rescale 使用每个元素作为 A 的对应行的最小值。

有关兼容的数组大小的详细信息,请参阅基本运算的兼容数组大小

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

输入范围的最大值,指定为标量、向量、矩阵或多维数组。输入数组 A 的默认值为 max(A(:))。指定输入范围将扩大或缩小输入数据的范围。例如,rescale 在缩放之前将所有大于指定输入最大值的元素设置为 'InputMax' 值。

'InputMax' 值的大小必须与输入数组兼容。例如,如果 A 是 M×N 矩阵,则 rescale 沿输入最大值的形状指示的维度进行运算:

  • 如果输入最大值是标量,则 rescale 使用它作为 A 的所有元素的最大值。

  • 如果输入最大值是 1×N 行向量,则 rescale 使用每个元素作为 A 的对应列的最大值。

  • 如果输入最大值是 M×1 列向量,则 rescale 使用每个元素作为 A 的对应行的最大值。

有关兼容的数组大小的详细信息,请参阅基本运算的兼容数组大小

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

算法

B = rescale(A,l,u,'InputMin',inmin,'InputMax',inmax) 使用公式

l + [(A-inmin)./(inmax-inmin)].*(u-l)

缩放数组 A 的元素(当 A 的值在 inmininmax 的边界范围内时)。

  • 如果未指定 lu,则 rescale 分别使用默认值 0 和 1。

  • 如果未指定 'InputMin' 名称-值对组,则 rescale 将其值设置为默认值 min(A(:))

  • 如果未指定 'InputMax' 名称-值对组,则 rescale 将其值设置为默认值 max(A(:))

扩展功能

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

另请参阅

| | |

在 R2017b 中推出