主要内容

clip

将数据裁剪到范围

自 R2024a 起

说明

C = clip(X,lower,upper) 通过将小于 lower 的值替换为 lower 并将大于 upper 的值替换为 upper,将数组 X 中的值裁剪到范围 [lower,upper]。返回的裁剪数据和输入数据具有相同的大小和数据类型。

示例

C = clip(X,lower,upper,Name=Value) 使用一个或多个名称-值参量指定用于裁剪的其他参数。表输入数据仅支持名称-值参量。例如,clip(X,lower,upper,DataVariables=datavars) 裁剪由 datavars 指定的表变量中的值。

示例

示例

全部折叠

将数据向量中的值裁剪到范围 [3, 6]。生成的向量包含指定边界内的值,其中所有小于 3 的值都替换为 3,所有大于 6 的值都替换为 6。

X = 1:7;
C = clip(X,3,6)
C = 1×7

     3     3     3     4     5     6     6

创建一个 7×4 数值矩阵。

col = [1:7]';
X = repmat(col,1,4)
X = 7×4

     1     1     1     1
     2     2     2     2
     3     3     3     3
     4     4     4     4
     5     5     5     5
     6     6     6     6
     7     7     7     7

裁剪矩阵每列中的值。下界中的每个元素(指定为行向量)设置输入数据对应列允许的最小值。上界(指定为标量)为输入数据的所有列设置允许的最大值。

lower = [1 2 3 4];
upper = 6;
C = clip(X,lower,upper)
C = 7×4

     1     2     3     4
     2     2     3     4
     3     3     3     4
     4     4     4     4
     5     5     5     5
     6     6     6     6
     6     6     6     6

创建一个 4×7 数值矩阵。

row = 1:7;
X = repmat(row,4,1)
X = 4×7

     1     2     3     4     5     6     7
     1     2     3     4     5     6     7
     1     2     3     4     5     6     7
     1     2     3     4     5     6     7

裁剪矩阵每行中的值。下界的每个元素(指定为列向量)设置输入数据对应行允许的最小值。上界(指定为标量)为输入数据的所有行设置允许的最大值。

lower = [1; 2; 3; 4];
upper = 6;
C = clip(X,lower,upper)
C = 4×7

     1     2     3     4     5     6     6
     2     2     3     4     5     6     6
     3     3     3     4     5     6     6
     4     4     4     4     5     6     6

将数据向量中的值裁剪到最大值 0。要仅裁剪到上界,请将下界指定为 -Inf。此值表示没有下界,clip 将任何超出上界的值替换为上界值。

X = -6:6;
C = clip(X,-Inf,0)
C = 1×13

    -6    -5    -4    -3    -2    -1     0     0     0     0     0     0     0

或者,要仅裁剪到下界,请将上界指定为 Inf

创建一个包含不同数据类型的三个变量的表。

num = rand(6,1);
num2 = single(rand(6,1));
dt = datetime(2016:2021,1,1)';
T = table(num,num2,dt)
T=6×3 table
      num       num2          dt     
    _______    _______    ___________

    0.81472     0.2785    01-Jan-2016
    0.90579    0.54688    01-Jan-2017
    0.12699    0.95751    01-Jan-2018
    0.91338    0.96489    01-Jan-2019
    0.63236    0.15761    01-Jan-2020
    0.09754    0.97059    01-Jan-2021

为单行表中不同数据类型的变量指定边界。

lower = table(0.2,single(0.1),datetime(2018,1,1),VariableNames=["num" "num2" "dt"])
lower=1×3 table
    num    num2        dt     
    ___    ____    ___________

    0.2    0.1     01-Jan-2018

upper = table(0.9,Inf,datetime(2020,1,1),VariableNames=["num" "num2" "dt"])
upper=1×3 table
    num    num2        dt     
    ___    ____    ___________

    0.9    Inf     01-Jan-2020

裁剪表中的 numdt 值,并将包含裁剪数据的表变量追加到输入表变量。

C = clip(T,lower,upper,DataVariables=["num" "dt"],ReplaceValues=0)
C=6×5 table
      num       num2          dt         num_clipped    dt_clipped 
    _______    _______    ___________    ___________    ___________

    0.81472     0.2785    01-Jan-2016      0.81472      01-Jan-2018
    0.90579    0.54688    01-Jan-2017          0.9      01-Jan-2018
    0.12699    0.95751    01-Jan-2018          0.2      01-Jan-2018
    0.91338    0.96489    01-Jan-2019          0.9      01-Jan-2019
    0.63236    0.15761    01-Jan-2020      0.63236      01-Jan-2020
    0.09754    0.97059    01-Jan-2021          0.2      01-Jan-2020

或者,如果您将边界指定为仅包含 numdt 的边界的单行表,则不需要指定 DataVariables 名称-值参量。

输入参数

全部折叠

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

clip 忽略 X 中的缺失值。

数据类型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | categorical | datetime | duration | table | timetable

裁剪数据的下界,指定为标量、向量、矩阵、多维数组或单行表。lower 必须小于或等于上界,并且具有与输入数据兼容的大小。有关详细信息,请参阅基本运算的兼容数组大小

通过将 lower 指定为标量,对 X 的所有元素使用相同的下界。通过分别将 lower 指定为行向量或列向量,对 X 中的每列或每行使用不同下界。

对于表输入数据,当要操作的表变量具有不同数据类型时,请将下界指定为单行表。单行表的变量名称必须与要操作的表变量的名称相同。

要仅裁剪到下界,请将上界指定为 Inf

裁剪数据的上界,指定为标量、向量、矩阵、多维数组或单行表。upper 必须大于或等于下界,并且具有与输入数据兼容的大小。有关详细信息,请参阅基本运算的兼容数组大小

通过将 upper 指定为标量,对 X 的所有元素使用相同的上界。通过分别将 upper 指定为行向量或列向量,对 X 中的每列或每行使用不同上界。

对于表输入数据,当要操作的表变量具有不同数据类型时,请将上界指定为单行表。单行表的变量名称必须与要操作的表变量的名称相同。

要仅裁剪到上界,请将下界指定为 -Inf

名称-值参数

全部折叠

Name1=Value1,...,NameN=ValueN 的形式指定可选参量对组,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。

示例: clip(X,lower,upper,ReplaceValues=false)

要对其进行操作的表变量,指定为下表中的选项之一。DataVariables 值指示要裁剪的输入表或时间表的哪些变量。

只有表和时间表输入数据支持 DataVariables

表中未由 DataVariables 指定的其他变量会传递给输出,而不会对其进行运算。如果不指定 DataVariablesclip 将对 X 中的所有变量进行操作。

索引方案要指定的值示例

变量名称

  • 字符串标量或字符向量

  • 字符串数组或字符向量元胞数组

  • pattern 对象

  • "A"'A' - 名为 A 的变量

  • ["A" "B"]{'A','B'} - 两个名为 AB 的变量

  • "Var"+digitsPattern(1) - 变量名为 "Var" 后跟一个数字

变量索引

  • 引用变量在表中位置的索引编号

  • 由数字组成的向量

  • 一个 logical 向量。通常,此向量的长度与变量的数目相同,但可以省略尾部的 0 (false) 值。

  • 3 - 表中的第三个变量

  • [2 3] - 表中的第二个和第三个变量

  • [false false true] - 第三个变量

函数句柄

  • 函数句柄,以表变量作为输入并返回 logical 标量

  • @isnumeric - 所有包含数值的变量

变量类型:

  • vartype 下标,用于选择指定类型的变量

  • vartype("numeric") - 所有包含数值的变量

示例: clip(X,lower,upper,DataVariables=["Var1" "Var2" "Var4"])

替换值指示符,当 X 是表或时间表时,指定为以下数值或逻辑值之一:

  • true1 - 将输入表变量替换为包含经过裁剪的数据的表变量。

  • false0 - 将所有已操作的表变量追加到输入表。追加的变量包含裁剪的数据。

只有表和时间表输入数据支持 ReplaceValues

示例: clip(X,lower,upper,ReplaceValues=false)

版本历史记录

在 R2024a 中推出

另请参阅

函数