文件帮助中心文件
在容忍范围内设定的成员
lia = ismembertol(a,b,tol)
lia = ismembertol(a,b)
[lia,locb] = ismembertol(___)
[___] = ismembertol(___,名称,价值)
例子
LIA.= ismembertol(一种那B.那托)返回包含逻辑的数组1(真的)其中的元素一种在容忍元素范围内B.。否则,数组包含逻辑0.(错误的)。两个值,你和V.,如果是在容忍范围内
LIA.= ismembertol(一种那B.那托)
LIA.
一种
B.
托
1
真的
0.
错误的
你
V.
abs(u-v)<= tol * max(abs([a(:); b(:)]))
那是,ismembertol.鳞片托输入基于数据幅度。
ismembertol.
ismembertol.类似于ismember.。然而ismember.执行确切的比较,ismembertol.使用容差执行比较。
ismember.
LIA.= ismembertol(一种那B.)使用默认的容差1E-6用于单精度输入和1E-12用于双精度输入。
LIA.= ismembertol(一种那B.)
1E-6
1E-12
[LIA.那LOCB.] = ismembertol(___)还返回一个数组,LOCB.,包含索引位置B.对于每个元素一种这是一个成员B.。您可以在以前的语法中使用任何输入参数。
[LIA.那LOCB.] = ismembertol(___)
LOCB.
[___] = ismembertol(___那名称,价值)使用以前语法中的任何输入或输出参数组合使用一个或多个名称 - 值对参数指定的其他选项。例如,ismembertol(a,b,'byrows',true)比较行的行一种和B.并返回逻辑列向量。
[___] = ismembertol(___那名称,价值)
名称,价值
ismembertol(a,b,'byrows',true)
全部收缩
创建矢量X。获得第二个向量y通过转换和未转变X。这种转变介绍了圆截止差异y。
X
y
x =(1:6)'* pi;y = 10. ^ log10(x);
验证X和y通过取得差异并不相同。
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.这在相应的元素的容差范围内一种。
OutputAllindices.
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)
locallb {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.是标量)不根据输入数据的幅度扩展。
ABS(U-V)<= TOL * DS
DS.
DEACASCALE.
首先,比较两个距离的小值eps.分开。指定托和DS.使公差方程内ABS(U-V)<= 10 ^ -6。
eps.
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不再是合适的耐受性。
exp(log(x))
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.。
Byrows.
指定OutputAllindices.作为真的返回所有要点的指数一种在查询点的公差范围内具有X坐标B.。
指定DEACASCALE AS.[1款]为X坐标使用绝对容差,同时忽略Y坐标。
[1款]
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])
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),'。')结尾
查询数组,指定为标量,矢量,矩阵或多维数组。输入一种和B.必须饱满。
如果您指定了Byrows.选项,然后一种和B.必须具有相同数量的列。
数据类型:单身的|双倍的
单身的
双倍的
比较耐受,指定为正实标量。ismembertol.鳞片托输入使用输入阵列中的最大绝对值输入一种和B.。然后ismembertol.使用由此产生的缩放比较公差来确定哪些元素一种也是一名成员B.。如果两个元素在彼此的容差范围内,那么ismembertol.认为他们是平等的。
两个值,你和V.,如果是在容忍范围内abs(u-v)<= tol * max(abs([a(:); b(:)]))。
要指定绝对容差,请指定两者托和'dataScale'名称值对。
'dataScale'
例子:tol = 0.05
tol = 0.05
例子:tol = 1e-8
tol = 1e-8
例子:tol = eps.
tol = eps.
指定可选的逗号分离对名称,价值论点。名称是参数名称和价值是相应的价值。名称必须出现在引号内。您可以以任何顺序指定多个名称和值对参数name1,value1,...,namen,valuen。
名称
价值
name1,value1,...,namen,valuen
lia = ismembertol(a,b,'byrows',true)
'OutputalAllindices'
输出索引类型,指定为逗号分隔的对组成'OutputalAllindices'和任何一种错误的(默认),真的那0., 要么1。ismembertol.解释数字0.作为错误的和数字1作为真的。
什么时候OutputAllindices.是真的, 这ismembertol.函数返回第二个输出,LOCB.作为单元阵列。单元格数组包含指数全部元素B.这在容忍相应的价值范围内一种。也就是说,每个细胞LOCB.对应于一个值一种,每个单元格中的值对应于位置B.。
例子:[lia,locallb] = ismembertol(a,b,tol,'outputallindices',true)
[lia,locallb] = ismembertol(a,b,tol,'outputallindices',true)
'byrows'
行比较切换,指定为逗号分隔对组成'byrows'和任何一种错误的(默认),真的那0., 要么1。ismembertol.解释数字0.作为错误的和数字1作为真的。使用此选项查找行一种和B.这在宽容范围内。
什么时候Byrows.是真的:
ismembertol.比较行的行一种和B.通过单独考虑每列。因此,一种和B.必须是2-D阵列,具有相同数量的列。
如果相应的行一种是在宽容的情况下B., 然后LIA.包含逻辑1(真的)。否则,它包含逻辑0.(错误的)。
两排,你和V.,如果是在容忍范围内所有(ABS(U-V)<= tol * max(abs([a; b]))))。
所有(ABS(U-V)<= tol * max(abs([a; b]))))
例子:lia = ismembertol(a,b,tol,'byrows',true)
lia = ismembertol(a,b,tol,'byrows',true)
数据的规模,指定为逗号分隔对组成'dataScale'和标量或矢量。指定DEACASCALE.作为数字标量,DS.,改变容差测试,ABS(U-V)<= TOL * DS。
当与之一起使用时Byrows.选项,这是DEACASCALE.价值也可以是矢量。在这种情况下,矢量的每个元素指定DS.对于相应的列一种。如果是值DEACASCALE.矢量是INF., 然后ismembertol.忽略相应的列一种。
INF.
例子:lia = ismembertol(a,b,'dataScale',1)
lia = ismembertol(a,b,'dataScale',1)
例子:[lia,locb] = ismembertol(a,b,'byrows',true,'dataScale',[eps(1)eps(10)eps(100)])
[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.是一个具有相同行数的列向量一种。
使用说明和限制:
这'byrows'和'OutputalAllindices'不支持参数。金宝app
不支持64位整数。金宝app
有关更多信息,请参阅在GPU上运行matlab函数(并行计算工具箱)。
eps.|ismember.|独特|uniquetol.
独特
uniquetol.
您有此示例的修改版本。您是否希望使用您的编辑打开此示例?
您单击了与此MATLAB命令对应的链接:
在MATLAB命令窗口中输入它来运行命令。Web浏览器不支持MATLAB命令。金宝app
选择一个网站,以便在可用的地方进行翻译的内容,并查看本地活动和优惠。根据您的位置,我们建议您选择:。
您还可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。
联系您当地的办公室