主要内容

isbetween

确定哪些元素在指定范围内

说明

TF = isbetween(A,lower,upper) 确定输入数据中的哪些元素在由下界和上界定义的区间内,并返回与输入数据大小相同的逻辑数组。默认情况下,该区间是闭区间。TF 包含逻辑值 1 (true)(表示对应元素在指定范围内),或包含逻辑值 0 (false)(表示对应元素不在指定范围内)。

示例

TF = isbetween(A,lower,upper,intervalType) 指定区间的类型。例如,isbetween(A,lower,upper,"open") 查找 A 中位于开区间 (lower,upper) 内的元素。

示例

TF = isbetween(___,Name=Value) 支持上述语法中的任何输入参量组合,且可使用一个或多个名称-值参量指定选项。例如,对于输入表 ATF = isbetween(A,lower,upper,OutputFormat="tabular") 将输出 TF 以表形式返回。

示例

示例

全部折叠

创建一个行向量,并查找向量中位于指定范围内的元素。

A = [1 3 5 7 9];
TF = isbetween(A,2,7)
TF = 1×5 logical array

   0   1   1   1   0

显示位于范围内的元素的值。

val = A(TF)
val = 1×3

     3     5     7

创建一个数值矩阵。

A = repmat(1:7,4,1)
A = 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;
TF = isbetween(A,lower,upper)
TF = 4×7 logical array

   1   1   1   1   1   1   0
   0   1   1   1   1   1   0
   0   0   1   1   1   1   0
   0   0   0   1   1   1   0

创建一个行向量,并确定向量中的哪些元素位于指定范围内。将区间类型指定为 "open" 以排除下界和上界。

A = 1:7;
TF = isbetween(A,3,6,"open")
TF = 1×7 logical array

   0   0   0   1   1   0   0

通过将区间类型指定为 "closedleft" 来包括下界。对于等于下界的任何元素,返回 1 (true)。

TF2 = isbetween(A,3,6,"closedleft")
TF2 = 1×7 logical array

   0   0   1   1   1   0   0

通过将区间类型指定为 "closedright" 来包括上界。对于等于上界的任何元素,返回 1 (true)。

TF3 = isbetween(A,3,6,"closedright")
TF3 = 1×7 logical array

   0   0   0   1   1   1   0

通过显示指定范围内的数组元素来比较区间类型。

val = A(TF)
val = 1×2

     4     5

val2 = A(TF2)
val2 = 1×3

     3     4     5

val3 = A(TF3)
val3 = 1×3

     4     5     6

创建一个由 datetime 值组成的数组。

A = datetime(2024,5,16:2:26)
A = 1×6 datetime
   16-May-2024   18-May-2024   20-May-2024   22-May-2024   24-May-2024   26-May-2024

为日期范围指定下界和上界。

lower = datetime(2024,01,01);
upper = "2024-05-22";

确定哪些元素位于闭区间内。

TF = isbetween(A,lower,upper)
TF = 1×6 logical array

   1   1   1   1   0   0

显示位于范围内的元素的值。

val = A(TF)
val = 1×4 datetime
   16-May-2024   18-May-2024   20-May-2024   22-May-2024

创建一个包含数据的表。

T = table([1;3;5;7],[2;4;6;8])
T=4×2 table
    Var1    Var2
    ____    ____

     1       2  
     3       4  
     5       6  
     7       8  

返回一个表,指示 T 中的元素位于指定范围内。

TF = isbetween(T,3,7,OutputFormat="tabular")
TF=4×2 table
    Var1     Var2 
    _____    _____

    false    false
    true     true 
    true     true 
    true     false

将输入表中位于指定范围之外的任何元素替换为缺失值。

T.Var1(~TF.Var1) = missing;
T.Var2(~TF.Var2) = missing
T=4×2 table
    Var1    Var2
    ____    ____

    NaN     NaN 
      3       4 
      5       6 
      7     NaN 

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

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 变量中的哪些元素位于指定范围内。

TF = isbetween(T,lower,upper,DataVariables=["num" "dt"])
TF = 6×3 logical array

   1   0   0
   0   0   0
   0   0   1
   0   0   1
   1   0   1
   0   0   0

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

输入参数

全部折叠

输入数据,指定为数组、表或时间表。

A 必须为具有类方法 lt (<) 或 le (<=) 的对象。

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

范围的下界,指定为数组或单行表。下界和上界必须大小相同或大小兼容lower 必须为具有类方法 lt (<) 或 le (<=) 的对象。

  • 要对 A 的所有元素使用相同的下界,请将 lower 指定为标量。

  • 要对 A 中的每列或每行使用不同下界,请分别将 lower 指定为行向量或列向量。

  • 要为每个数据元素使用不同下界,请将 lower 指定为与 A 大小相同的数组。

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

范围的上界,指定为数组或单行表。下界和上界必须大小相同或大小兼容upper 必须为具有类方法 lt (<) 或 le (<=) 的对象。

  • 要对 A 的所有元素使用相同的上界,请将 upper 指定为标量。

  • 要对 A 中的每列或每行使用不同的上界,请分别将 upper 指定为行向量或列向量。

  • 要为每个数据元素使用不同的上界,请将 upper 指定为与 A 大小相同的数组。

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

定义允许值范围的区间的类型,指定为下表中的值之一。

区间的类型

描述

"closed"(默认值)

Closed interval [lower, upper]

包括 lowerupper

"open"

Open interval (lower, upper)

排除 lowerupper

"openleft""closedright"

Half-open interval (lower, upper]

排除 lower 并包括 upper

"openleft""closedright" 具有相同的行为。

"openright""closedleft"

Half-open interval [lower, upper)

包括 lower 并排除 upper

"openright""closedleft" 具有相同的行为。

名称-值参数

全部折叠

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

示例: TF = isbetween(A,lower,upper,OutputFormat="tabular")

要对其进行操作的表或时间表变量,指定为下表中的值之一。对于 DataVariables 未指定的变量,TF 包含逻辑值 0 (false),除非 OutputFormat 的值为 "tabular"

如果不指定 DataVariablesisbetween 将对 A 中的所有变量进行操作。

索引方案要指定的值示例

变量名称

  • 字符串标量或字符向量

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

  • 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") - 所有包含数值的变量

示例: TF = isbetween(T,lower,upper,DataVariables=["Var1" "Var2" "Var4"])

输出数据类型,指定为下列值之一:

  • "logical" - 将输出 TF 以逻辑数组形式返回。

  • "tabular" - 对于表输入数据,以表形式返回输出 TF。对于时间表输入数据,以时间表形式返回输出 TF

示例: TF = isbetween(T,lower,upper,OutputFormat="tabular")

扩展功能

全部展开

版本历史记录

在 R2014b 中推出

全部展开

另请参阅

| | | | | | | |