主要内容

ismembertol.

在容忍范围内设定的成员

描述

例子

LIA.= ismembertol(一种B.返回包含逻辑的数组1真的)其中的元素一种在容忍元素范围内B.。否则,数组包含逻辑0.错误的)。两个值,V.,如果是在容忍范围内

abs(u-v)<= tol * max(abs([a(:); b(:)]))

那是,ismembertol.鳞片输入基于数据幅度。

ismembertol.类似于ismember.。然而ismember.执行确切的比较,ismembertol.使用容差执行比较。

例子

LIA.= ismembertol(一种B.使用默认的容差1E-6用于单精度输入和1E-12用于双精度输入。

例子

[LIA.LOCB.] = ismembertol(___还返回一个数组,LOCB.,包含索引位置B.对于每个元素一种这是一个成员B.。您可以在以前的语法中使用任何输入参数。

例子

[___] = ismembertol(___名称,价值使用以前语法中的任何输入或输出参数组合使用一个或多个名称 - 值对参数指定的其他选项。例如,ismembertol(a,b,'byrows',true)比较行的行一种B.并返回逻辑列向量。

例子

全部收缩

创建矢量X。获得第二个向量y通过转换和未转变X。这种转变介绍了圆截止差异y

x =(1:6)'* pi;y = 10. ^ log10(x);

验证Xy通过取得差异并不相同。

X-Y.
ans =.6×110.-14×0.0444 0 0 0 0 0 -0.3553

采用ismember.找到要素X那是在y。这ismember.函数执行精确的比较并确定一些矩阵元素X不是成员y

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

采用ismembertol.使用小容差执行比较。ismembertol.将容差的元素视为相等的特征,并确定所有元素X是成员y

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

默认情况下,ismembertol.寻找元素这在宽容范围内,但它也可以找到在容差范围内的矩阵。

创建一个数字矩阵,一种。获得第二个矩阵,B.,通过转换和不转化一种。这种转变介绍了循环差异B.

a = [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. ^ a);

采用ismember.找到行的行一种那是在B.ismember.执行确切的比较,从而确定大多数行一种不是成员B.但是,即使一些行只有少量不同。

lia = ismember(a,b,'行'
lia =5x1逻辑阵列0 0 0 0 1

采用ismembertol.使用小容差执行行比较。ismembertol.将公差范围内的行视为平等,因此确定所有行一种是成员B.

lia = ismembertol(a,b,'byrows',真的)
lia =5x1逻辑阵列1 1 1 1 1

创建两个随机数向量,并确定哪些值一种也是成员B.,使用公差。指定OutputAllindices.作为真的返回元素中的所有索引B.这在相应的元素的容差范围内一种

RNG(5)A = RAND(1,15);b =兰特(1,5);[lia,locallb] = ismembertol(a,b,0.2,'OutputalAllindices',真的)
lia =1x15逻辑阵列1 0 1 0 1 1 1 1 1 1 0 1 1 1 0
locallb =1×15个单元阵列列1到5 {2x1 double} {[0]} {2x1 double} {[0]} {3x1 double}列6到10 {2x1 double} {[4]} {3x1 double} {3x1 double} {2x1 double}列11到15 {[0]} {2x1 double} {4x1 double} {2x1 double} {[0]}

找到元素的平均值B.这在价值的宽容范围内A(13)。细胞locallb {13}包含元素的所有索引B.这在宽容之内A(13)

A(13)
ANS = 0.4413.
allb = b(locallb {13})
allb =1×4.0.2741 0.4142 0.2961 0.5798
aveb =均值(allb)
aveb = 0.3911.

默认情况下,ismembertol.使用表单的公差测试ABS(U-V)<= TOL * DS, 在哪里DS.根据输入数据的幅度自动缩放。您可以指定不同的DS.与之使用的价值DEACASCALE.选项。但是,绝对的宽容(哪里DS.是标量)不根据输入数据的幅度扩展。

首先,比较两个距离的小值eps.分开。指定DS.使公差方程内ABS(U-V)<= 10 ^ -6

x = 0.1;ISMemberTol(x,exp(log(x)),10 ^ -6,'dataScale'1)
ans =.逻辑1

接下来,增加值的幅度。计算中的圆关闭错误exp(log(x))与值的大小成比例,具体到EPS(x)。即使两个大值是距离eps.彼此,EPS(x)现在更大了。所以,10 ^ -6不再是合适的耐受性。

x = 10 ^ 10;ISMemberTol(x,exp(log(x)),10 ^ -6,'dataScale'1)
ans =.逻辑0.

使用默认值(缩放)值来纠正此问题DS.

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

创建一组随机的2-D点,然后使用ismembertol.将点分组到具有与一小组查询点相似的(公差范围)X坐标的垂直频带,B.。使用这些选项ismembertol.

  • 指定Byrows.作为真的,因为点坐标是行的行一种B.

  • 指定OutputAllindices.作为真的返回所有要点的指数一种在查询点的公差范围内具有X坐标B.

  • 指定DEACASCALE AS.[1款]为X坐标使用绝对容差,同时忽略Y坐标。

a = rand(1000,2);b = [(0:.2:1)',0.5 * oN(6,1)];[lia,locallb] = ismembertol(b,a,0.1,'byrows', 真的,......'OutputalAllindices', 真的,'dataScale',[1,INF])
lia =6x1逻辑阵列1 1 1 1 1 1
locallb =6×1个单元阵列{94x1 double} {223x1 double} {195x1 double} {212x1 double} {187x1 double} {89x1 double}

绘制点一种这在每个查询点的容差范围内B.

抓住绘图(B(:,1),B(:,2),'X'为了k = 1:长度(locallb)绘图(a(locallb {k},1),a(locallb {k},2),'。'结尾

图包含轴。轴包含7个类型的类型。

输入参数

全部收缩

查询数组,指定为标量,矢量,矩阵或多维数组。输入一种B.必须饱满。

如果您指定了Byrows.选项,然后一种B.必须具有相同数量的列。

数据类型:单身的|双倍的

查询数组,指定为标量,矢量,矩阵或多维数组。输入一种B.必须饱满。

如果您指定了Byrows.选项,然后一种B.必须具有相同数量的列。

数据类型:单身的|双倍的

比较耐受,指定为正实标量。ismembertol.鳞片输入使用输入阵列中的最大绝对值输入一种B.。然后ismembertol.使用由此产生的缩放比较公差来确定哪些元素一种也是一名成员B.。如果两个元素在彼此的容差范围内,那么ismembertol.认为他们是平等的。

两个值,V.,如果是在容忍范围内abs(u-v)<= tol * max(abs([a(:); b(:)]))

要指定绝对容差,请指定两者'dataScale'名称值对。

例子:tol = 0.05

例子:tol = 1e-8

例子:tol = eps.

数据类型:单身的|双倍的

名称值对参数

指定可选的逗号分离对名称,价值论点。名称是参数名称和价值是相应的价值。名称必须出现在引号内。您可以以任何顺序指定多个名称和值对参数name1,value1,...,namen,valuen

例子:lia = ismembertol(a,b,'byrows',true)

输出索引类型,指定为逗号分隔的对组成'OutputalAllindices'和任何一种错误的(默认),真的0., 要么1ismembertol.解释数字0.作为错误的和数字1作为真的

什么时候OutputAllindices.真的, 这ismembertol.函数返回第二个输出,LOCB.作为单元阵列。单元格数组包含指数全部元素B.这在容忍相应的价值范围内一种。也就是说,每个细胞LOCB.对应于一个值一种,每个单元格中的值对应于位置B.

例子:[lia,locallb] = ismembertol(a,b,tol,'outputallindices',true)

行比较切换,指定为逗号分隔对组成'byrows'和任何一种错误的(默认),真的0., 要么1ismembertol.解释数字0.作为错误的和数字1作为真的。使用此选项查找行一种B.这在宽容范围内。

什么时候Byrows.真的

  • ismembertol.比较行的行一种B.通过单独考虑每列。因此,一种B.必须是2-D阵列,具有相同数量的列。

  • 如果相应的行一种是在宽容的情况下B., 然后LIA.包含逻辑1真的)。否则,它包含逻辑0.错误的)。

两排,V.,如果是在容忍范围内所有(ABS(U-V)<= tol * max(abs([a; b]))))

例子:lia = ismembertol(a,b,tol,'byrows',true)

数据的规模,指定为逗号分隔对组成'dataScale'和标量或矢量。指定DEACASCALE.作为数字标量,DS.,改变容差测试,ABS(U-V)<= TOL * DS

当与之一起使用时Byrows.选项,这是DEACASCALE.价值也可以是矢量。在这种情况下,矢量的每个元素指定DS.对于相应的列一种。如果是值DEACASCALE.矢量是INF., 然后ismembertol.忽略相应的列一种

例子:lia = ismembertol(a,b,'dataScale',1)

例子:[lia,locb] = ismembertol(a,b,'byrows',true,'dataScale',[eps(1)eps(10)eps(100)])

数据类型:单身的|双倍的

输出参数

全部收缩

逻辑指数到一种,返回包含逻辑的向量或矩阵1真的)无论元素(或行)在哪里一种是成员B.(在宽容范围内)。别处,LIA.包含逻辑0.错误的)。

LIA.与尺寸相同一种,除非您指定了Byrows.选项。在这种情况下,LIA.是一个具有相同行数的列向量一种

地点B.,作为向量,矩阵或单元格数组返回。LOCB.包含元素(或行)的索引B.发现了一种(在宽容范围内)。LOCB.包含0.无论元素在哪里一种不是一个成员B.

如果OutputAllindices.真的, 然后ismembertol.回报LOCB.作为单元阵列。单元格数组包含指数全部元素B.这在容忍相应的价值范围内一种。也就是说,每个细胞LOCB.对应于一个值一种,每个单元格中的值对应于位置B.

LOCB.与尺寸相同一种,除非您指定了Byrows.选项。在这种情况下,LOCB.是一个具有相同行数的列向量一种

扩展能力

在R2015A介绍