Main Content

rescale

数组元素的缩放范围

说明

示例

R = rescale(A) 根据 A 中所有元素的最小值和最大值,将 A 中的所有元素缩放到区间 [0, 1]。输出数组 R 的大小与 A 相同。

示例

R = rescale(A,l,u)A 中的所有元素缩放到区间 [l u]

示例

R = rescale(___,Name,Value) 支持上述语法中的任何输入参量组合,且可使用一个或多个名称-值参量指定选项。例如,rescale(A,"InputMin",5) 在缩放到区间 [0, 1] 之前,将 A 中小于 5 的所有元素设置为 5。

示例

全部折叠

将向量的元素缩放到单位区间 [0, 1],这是 rescale 的默认区间。缩放保持分布的形状。

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

         0    0.2500    0.5000    0.7500    1.0000

通过指定下界和上界,将向量的元素缩放到区间 [–1, 1]。

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

   -1.0000   -0.5000         0    0.5000    1.0000

将矩阵的每列独立缩放到单位区间 [0, 1]。将输入范围的最小值指定为包含每个矩阵列中最小元素的行向量。将输入范围的最大值指定为包含每个矩阵列中最大元素的行向量。

A = [0.4 -4; 0.5 -5; 0.9 9; 0.2 1]
A = 4×2

    0.4000   -4.0000
    0.5000   -5.0000
    0.9000    9.0000
    0.2000    1.0000

colmin = min(A)
colmin = 1×2

    0.2000   -5.0000

colmax = max(A)
colmax = 1×2

    0.9000    9.0000

R = rescale(A,"InputMin",colmin,"InputMax",colmax)
R = 4×2

    0.2857    0.0714
    0.4286    0.0000
    1.0000    1.0000
         0    0.4286

将第二列缩放到区间 [–1, 1]。除了 InputMinInputMax 名称-值参量之外,还指定重新缩放数据的上界和下界。

Rcol = rescale(A,[0 -1],1,"InputMin",colmin,"InputMax",colmax)
Rcol = 4×2

    0.2857   -0.8571
    0.4286   -1.0000
    1.0000    1.0000
         0   -0.1429

将输入向量的元素裁剪到范围 [1, 5],并将向量重新缩放到默认区间 [0, 1]。裁剪将所有元素值限制在指定的输入范围内。

A = [-30 1 2 3 4 5 70];
R = rescale(A,"InputMin",1,"InputMax",5)
R = 1×7

         0         0    0.2500    0.5000    0.7500    1.0000    1.0000

输入参数

全部折叠

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

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

  • 如果 A 是常量,则 rescale 返回区间的下界(默认为 0)或 NaN(当指定的区间包含 Inf 时)。

重新缩放数据的下界,指定为标量、向量、矩阵或多维数组。l 必须小于上界,并且大小与输入数组兼容。有关详细信息,请参阅基本运算的兼容数组大小

要对 A 的所有元素使用相同的下界,请将 l 指定为标量。要对 A 中的每列或每行使用不同下界,请分别将 l 指定为行向量或列向量。

如果为每列或每行设置不同区间界限,在计算每列或每行的缩放值时,rescale 仍会考虑输入数组中的所有值。要独立地重新缩放每列或每行,除了将 lu 指定为向量之外,还可以通过将 InputMinInputMax 名称-值参量指定为向量来设置输入数组沿每列或每行的范围。

重新缩放数据的上界,指定为标量、向量、矩阵或多维数组。u 必须大于下界,并且大小与输入数组兼容。有关详细信息,请参阅基本运算的兼容数组大小

要对 A 的所有元素使用相同的上界,请将 u 指定为标量。要对 A 中的每列或每行使用不同上界,请分别将 u 指定为行向量或列向量。

如果为每列或每行设置不同区间界限,在计算每列或每行的缩放值时,rescale 仍会考虑输入数组中的所有值。要独立地重新缩放每列或每行,除了将 lu 指定为向量之外,还可以通过将 InputMinInputMax 名称-值参量指定为向量来设置输入数组沿每列或每行的范围。

名称-值参数

将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。

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

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: R = rescale(A,"InputMin",5,"InputMax",10)

输入范围的最小值,指定为标量、向量、矩阵或多维数组。InputMin 的默认值为 min(A(:))InputMin 的大小必须与输入数组兼容。有关详细信息,请参阅基本运算的兼容数组大小

指定 InputMin 来裁剪或扩展输入数组的范围。rescale 使用 InputMin 作为输入范围的最小值,而不是 A 的最小值。在缩放之前,将小于 InputMinA 的元素设置为 InputMin 的对应值。

要对 A 的所有元素使用相同的最小输入范围,请将 InputMin 指定为标量。要独立缩放 A 的列,请将 InputMin 指定为行向量。要独立缩放 A 的行,请将 InputMin 指定为列向量。

示例: R = rescale(A,"InputMin",5)

示例: R = rescale(A,"InputMin",min(A),"InputMax",max(A))

输入范围的最大值,指定为标量、向量、矩阵或多维数组。InputMax 的默认值为 max(A(:))InputMax 的大小必须与输入数组兼容。有关详细信息,请参阅基本运算的兼容数组大小

指定 InputMax 来裁剪或扩展输入数组的范围。rescale 使用 InputMax 作为输入范围的最大值,而不是 A 的最大值。在缩放之前,将大于 InputMaxA 的元素设置为 InputMax 的对应值。

要对 A 的所有元素使用相同的输入范围最大值,请将 InputMax 指定为标量。要独立缩放 A 的列,请将 InputMax 指定为行向量。要独立缩放 A 的行,请将 InputMax 指定为列向量。

示例: R = rescale(A,"InputMax",10)

示例: R = rescale(A,"InputMin",min(A),"InputMax",max(A))

算法

A 的值在 InputMinInputMax 定义的范围内时,rescale 使用公式 R=l+[Ainputmininputmaxinputmin](ul) 缩放输入数组 A 的元素。

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

  • 如果未指定 InputMin,则 rescale 将其值设置为默认值 min(A(:))

  • 如果未指定 InputMax,则 rescale 将其值设置为默认值 max(A(:))

扩展功能

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

版本历史记录

在 R2017b 中推出

另请参阅

函数

App