主要内容

ismembertol

组的成员在公差内

描述

例子

投资局= ismembertol (一个,B,托尔)返回一个数组,其中包含逻辑1(真正的)的元素一个在宽容的元素吗B。否则,该数组包含逻辑0()。两个值,uv,在宽容

abs (uv) < = tol *马克斯(abs (((:); B (:))))

也就是说,ismembertol尺度的托尔输入基于数据的大小。

ismembertol类似于ismember。而ismember执行精确的比较,ismembertol使用一个公差进行比较。

例子

投资局= ismembertol (一个,B)使用一个默认的公差1 e-6为单精确输入和1 e-12双精度的输入。

例子

(投资局,LocB)= ismembertol (___)返回一个数组,LocB,包含索引位置B为每个元素一个这是一个成员B。您可以使用任何输入参数的以前的语法。

例子

(___)= ismembertol (___,名称,值)使用附加选项指定一个或多个名称-值对参数使用任何输入或输出参数组合在以前的语法。例如,ismembertol (A, B, ByRows,真的)比较的行一个B并返回一个逻辑列向量。

例子

全部折叠

创建一个向量x。获得第二个向量y通过改变和untransformingx。这个变换引入了舍入的差异y

x =(1:6) *π;y = 10 ^ log10 (x);

验证xy不相同的区别。

x - y
ans =6×110-14年-0.3553×0.0444 0 0 0 0

使用ismember找到的元素xy。的ismember函数执行的比较和确定一些矩阵的元素x不是成员y

lia = ismember (x, y)
lia =6 x1逻辑阵列0 1 1 1 1 0

使用ismembertol执行使用一个小的比较宽容。ismembertol将元素在宽容作为平等和确定所有的元素x成员的y

LIA = ismembertol (x, y)
LIA =6 x1逻辑阵列1 1 1 1 1 1

默认情况下,ismembertol查找元素内宽容,但也能找到一个矩阵的公差范围内。

创建一个数字矩阵,一个。获得第二个矩阵,B通过改造和untransforming一个。这个变换引入了舍入的差异B

(0.05 - 0.11 = 0.18;0.18 0.21 0.29;0.34 0.36 0.41;0.46 0.52 0.76;0.82 0.91 1.00);B = log10 (10 ^);

使用ismember找到的行一个Bismember执行精确的比较,从而确定大部分的行一个不是成员B,尽管一些相差只有少量的行。

lia = ismember (A, B,“行”)
lia =5 x1逻辑阵列0 0 0 0 1

使用ismembertol使用小公差执行行比较。ismembertol对待行内公差作为平等,从而确定所有的行一个成员的B

LIA = ismembertol (A, B,“ByRows”,真正的)
LIA =5 x1逻辑阵列1 1 1 1 1

创建两个向量的随机数和确定哪些值一个也的成员B用宽容。指定OutputAllIndices作为真正的返回所有的元素的索引B在宽容中相应的元素一个

rng (5) A =兰德(15);B =兰德(1、5);[LIA, LocAllB] = ismembertol (A, B, 0.2,“OutputAllIndices”,真正的)
LIA =1连接逻辑阵列1 0 1 0 1 1 1 1 1 1 0 1 1 1 0
LocAllB =1×15单元阵列列1到5 {2 x1双}{[0]}{2 x1双}{[0]}{3 x1双}列6到10 {2 x1双}{[4]}{3 x1双}{3 x1双}{2 x1双}列11到15 {[0]}{2 x1双}{4 x1双}{2 x1双}{[0]}

发现元素的平均值B在宽容的价值(13)。细胞LocAllB {13}包含了所有元素的索引B公差范围内(13)

(13)
ans = 0.4413
allB = B (LocAllB {13})
allB =1×40.2741 0.4142 0.2961 0.5798
aveB =意味着(allB)
aveB = 0.3911

默认情况下,ismembertol使用一个表单的耐量试验abs (uv) < = tol * DS,在那里DS根据输入数据的大小自动缩放。您可以指定一个不同的DS使用价值DataScale选择。然而,绝对的公差(DS是一个标量)不根据输入数据的大小规模。

首先,比较两个值,一个距离每股收益分开。指定托尔DS在宽容方程abs (uv) < = 10 ^ 6

x = 0.1;ismembertol (x, exp(日志(x)), 10 ^ 6,“DataScale”,1)
ans =逻辑1

接下来,增加的幅度值。舍入误差的计算exp(日志(x))值的大小成正比,特别是每股收益(x)。尽管两大值的距离每股收益从一个另一个每股收益(x)现在大得多。因此,10 ^ 6不再是一个合适的公差。

x = 10 ^ 10;ismembertol (x, exp(日志(x)), 10 ^ 6,“DataScale”,1)
ans =逻辑0

纠正这个问题通过使用默认(比例)的价值DS

Y = 10 ^ [0.1];ismembertol (Y, exp(日志(Y)))
ans =1 x2逻辑阵列1

创建一组随机二维点,然后使用ismembertol组的点到垂直的乐队有类似(within-tolerance)坐标一个小套查询点,B。使用这些选项ismembertol:

  • 指定ByRows作为真正的,因为点坐标的行一个B

  • 指定OutputAllIndices作为真正的返回所有点的指数一个有在公差查询的点坐标B

  • DataScale指定为(1正)使用绝对坐标的宽容,而忽略了坐标。

一个=兰德(1000 2);B = [(0: .2:1)”, 0.5 * 1 (6,1)];[LIA, LocAllB] = ismembertol (B, A, 0.1,“ByRows”,真的,“OutputAllIndices”,真的,“DataScale”(1正))
LIA =6 x1逻辑阵列1 1 1 1 1 1
LocAllB =6×1单元阵列{94 x1双}{223 x1双}{195 x1双}{212 x1双}{187 x1双}{89 x1双}

画出点一个在每个查询点公差B

持有情节(B (: 1)、B (:, 2),“x”)k = 1:长度(LocAllB)图(一个(LocAllB {k}, 1),一个(LocAllB {k}, 2),“。”)结束

图包含一个坐标轴对象。坐标轴对象包含7线类型的对象。

输入参数

全部折叠

查询数组,指定为一个标量、向量矩阵,或多维数组。输入一个B必须完整。

如果你指定ByRows选项,然后一个B必须有相同数量的列。

数据类型:|

查询数组,指定为一个标量、向量矩阵,或多维数组。输入一个B必须完整。

如果你指定ByRows选项,然后一个B必须有相同数量的列。

数据类型:|

比较宽容,指定为一个积极的真正的标量。ismembertol尺度的托尔输入使用的最大绝对值在输入数组一个B。然后ismembertol使用结果比较宽容,以确定哪些元素一个也是的一员吗B。如果两个元素是在宽容彼此,ismembertol认为他们是平等的。

两个值,uv,在宽容abs (uv) < = tol *马克斯(abs (((:); B (:))))

指定一个绝对的宽容,同时指定托尔“DataScale”名称-值对。

例子:托尔= 0.05

例子:托尔= 1 e-8

例子:托尔=每股收益

数据类型:|

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:LIA = ismembertol (A, B, ByRows,真的)

产出指数类型,指定为逗号分隔组成的“OutputAllIndices”,要么(默认),真正的,0,或1ismembertol解释数字0作为和数字1作为真正的

OutputAllIndices真正的,ismembertol函数返回第二个输出,LocB单元阵列。细胞数组包含的指标所有元素B内相应的公差值一个。也就是说,每一个细胞LocB对应于一个值一个,每个单元格中的值对应的位置B

例子:[LIA, LocAllB] = ismembertol (A, B,托尔,“OutputAllIndices”,真的)

行比较切换,指定为逗号分隔组成的“ByRows”,要么(默认),真正的,0,或1ismembertol解释数字0作为和数字1作为真正的。使用这个选项找到行一个B都在公差之内。

ByRows真正的:

  • ismembertol比较的行一个B通过考虑每一列分别。因此,一个B必须具有相同数量的列的二维数组。

  • 如果相应的行一个在宽容的行吗B,然后投资局包含逻辑1(真正的)。否则,它包含逻辑0()。

两行,uv,在宽容所有(abs (uv) < = tol *马克斯(abs ([A, B])))

例子:LIA = ismembertol (A, B,托尔,“ByRows”,真的)

规模的数据,指定为逗号分隔组成的“DataScale”和一个标量或矢量。指定DataScale作为一个数字标量,DS,改变耐量试验,abs (uv) < = tol * DS

当一起使用ByRows选项时,DataScale值也可以是一个向量。在这种情况下,每个元素的向量指定DS相应的列一个。如果一个值DataScale向量是,然后ismembertol忽略了相应的列一个

例子:LIA = ismembertol (A, B, DataScale, 1)

例子:[LIA, LocB] = ismembertol (A, B, ByRows,真的,“DataScale”, [eps(1)每股收益(10)每股收益(100)))

数据类型:|

输出参数

全部折叠

逻辑索引一个,返回一个包含逻辑向量或矩阵1(真正的)无论元素(或行)一个成员的B(在公差内)。在其他地方,投资局包含逻辑0()。

投资局一样的尺寸吗一个,除非你指定ByRows选择。在这种情况下,投资局是一个列向量与相同数量的行吗一个

地点在B,返回为一个向量,矩阵,或细胞数组。LocB包含指数的元素(或行)B中发现的一个(在公差内)。LocB包含0无论一个元素在一个不是成员B

如果OutputAllIndices真正的,然后ismembertol返回LocB作为一个单元阵列。细胞数组包含的指标所有元素B内相应的公差值一个。也就是说,每一个细胞LocB对应于一个值一个,每个单元格中的值对应的位置B

LocB一样的尺寸吗一个,除非你指定ByRows选择。在这种情况下,LocB是一个列向量与相同数量的行吗一个

扩展功能

版本历史

介绍了R2015a