文档

uniquetol

容忍范围内的独特价值

描述

例子

C= uniquetol (一个托尔返回中唯一的元素一个用宽容托尔.两个值,u而且v,都在可容忍的范围内

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

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

uniquetol类似于独特的.而独特的执行精确的比较,uniquetol使用公差执行比较。

例子

C= uniquetol (一个使用的默认容差1 e-6对于单精度输入和1 e-12双精度的输入。

例子

CIA集成电路) = uniquetol (___返回索引向量IA而且集成电路,这样C = (IA)而且A ~ C (IC)(或(:) ~ C(集成电路)如果一个是矩阵),哪里意味着值在彼此的容忍范围内。您可以使用前面语法中的任何输入参数。

例子

___) = uniquetol (___名称,值使用使用前面语法中的任何输入或输出参数组合的一个或多个名称-值对参数指定的附加选项。例如,uniquetol(“ByRows”,真的)中的惟一行一个

例子

全部折叠

创建一个向量x.获得第二个向量y通过转化和非转化x.此转换引入舍入差异y

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

验证x而且y通过取差就不相同了。

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

使用独特的找出连接向量中唯一的元素(x, y).的独特的函数执行精确比较,并确定中的某些值x不完全等于in的值y.这些相同的元素有非零的差异x - y.因此,c包含值出现是重复的。

c =独特((x, y))
c =8×13.1416 3.1416 6.2832 9.4248 12.5664 15.7080 18.8496 18.8496

使用uniquetol使用小公差进行比较。uniquetol平等对待在可容忍范围内的元素。

C = uniquetol ((x, y))
C =6×13.1416 6.2832 9.4248 12.5664 15.7080 18.8496

默认情况下,uniquetol寻找独特的元素那是在容忍之内,但也能找到独特在公差范围内的矩阵。

创建一个数字矩阵,一个.得到第二个矩阵,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);B = log10 (10 ^);

使用独特的找到唯一的行一个而且B.的独特的函数执行精确比较,并确定连接矩阵中的所有行[A, B]是惟一的,即使有些行只相差很小。

独特的([A, B],“行”
ans =8×30.0500 0.1100 0.1800 0.0500 0.1100 0.1800 0.2100 0.2900 0.1800 0.2100 0.2900 0.3400 0.3600 0.4100 0.4100 0.5200 0.7600 0.4600 0.5200 0.7600

使用uniquetol找到唯一的行。uniquetol将在容忍范围内的行一视同仁。

uniquetol ([A, B],“ByRows”,真正的)
ans =4×30.0500 0.1100 0.1800 0.1800 0.2100 0.2900 0.3400 0.3600 0.4100 0.4600 0.5200 0.7600

创建一个向量,x.得到第二个向量,y通过转化和非转化x.中的某些元素引入舍入差异y

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

结合x而且y变成一个向量,一个.使用uniquetol重建一个在容忍范围内的价值观是平等的。

= (x, y)
一个=10×13.1416 6.2832 9.4248 12.5664 15.7080 3.1416 6.2832 9.4248 12.5664 15.7080
[C IA IC] = uniquetol(一个);newA = C(集成电路)
newA =10×13.1416 6.2832 9.4248 12.5664 15.7080 3.1416 6.2832 9.4248 12.5664 15.7080

您可以使用newA==或者使用完全相等的函数isequal独特的在随后的代码。

D1 =独特(A)
D1 =6×13.1416 3.1416 6.2832 9.4248 12.5664 15.7080
D2 =独特(newA)
D2 =5×13.1416 6.2832 9.4248 12.5664 15.7080

创建二维样本点云,限制在半径的圆内0.5以点为中心 1 2 1 2

x =兰德(10000 2);insideCircle =√(x(: 1)闲置)^ 2 + (x(:, 2)闲置)^ 2)< 0.5;y = x (insideCircle:);

找到一个简化的点集,使原始数据集的每个点都在一个点的容错范围内。

托尔= 0.05;C = uniquetol (y,托尔,“ByRows”,真正的);

在原始数据集的顶部用红点绘制减少的点集。红点是原始数据集的所有成员。所有的红点都至少有一段距离托尔分开。

情节(y (: 1), y (:, 2),“。”)举行平等的情节(C (: 1), C (:, 2),“r”“MarkerSize”, 10)

创建一个随机数向量,并使用公差确定唯一元素。指定OutputAllIndices作为真正的返回在唯一值允许范围内的元素的所有索引。

一个=兰德(100 1);[C IA] = uniquetol(1飞行,“OutputAllIndices”,真正的);

求出在该值公差范围内的元素的平均值C (2)

C (2)
ans = 0.0318
真主安拉= (IA {2})
真主安拉=3×10.0357 0.0318 0.0344
aveA =意味着(真主安拉)
aveA = 0.0340

默认情况下,uniquetol使用窗体的公差测试abs (uv) < = tol * DS,在那里DS自动尺度根据输入数据的大小。您可以指定不同的DS的值一起使用DataScale选择。然而,绝对公差(其中DS是一个标量),不根据输入数据的大小进行缩放。

首先,比较两个小的距离值每股收益分开。指定托尔而且DS求内差方程:abs (uv) < = 10 ^ 6

x = 0.1;uniquetol ([x, exp(日志(x))], 10 ^ 6,“DataScale”, 1)
ans = 0.1000

接下来,增加值的大小。计算中的四舍五入误差exp(日志(x))与值的大小成正比,具体来说是每股收益(x).即使两个大的值是一个距离每股收益从一个另一个每股收益(x)现在要大得多。因此,10 ^ 6不再是合适的容忍。

x = 10 ^ 10;uniquetol ([x, exp(日志(x))], 10 ^ 6,“DataScale”, 1)
ans =1×21010×1.0000 - 1.0000

的默认(缩放的)值来纠正此问题DS

格式Y = [0.1 10^10];uniquetol ([Y, exp(日志(Y))))
ans =1×21010×0.000000000010000 - 1.000000000000000

创建一组随机的2-D点,然后使用uniquetol将点分组到具有相似(在公差范围内)x坐标的垂直带中。使用这些选项uniquetol

  • 指定ByRows作为真正的因为点坐标在一个

  • 指定OutputAllIndices作为真正的返回x坐标在彼此公差范围内的所有点的索引。

  • 指定DataScale作为(1正)要使用绝对公差x-坐标,忽略y协调。

一个=兰德(1000 2);DS = [1 Inf];[C,IA] = uniquetol(A, 0;“ByRows”,真的,...“OutputAllIndices”,真的,“DataScale”DS);

画出每个波段的点和平均值。

持有k = 1:长度(IA)图(A(IA{k},1), A(IA{k},2),“。”) meanAi = mean(A(IA{k},:));情节(meanAi (1) meanAi (2),“xr”结束

输入参数

全部折叠

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

数据类型:|

比较公差,指定为正的实标量。uniquetol尺度的托尔使用输入数组中的最大绝对值进行输入一个.然后uniquetol使用得到的缩放比较公差来确定哪些元素一个是独一无二的。如果两个元素一个这么说,彼此都在容忍范围内了uniquetol认为他们是平等的。

两个值,u而且v,都在可容忍的范围内abs (uv) < = tol *马克斯(abs ())

要指定绝对公差,请同时指定两者托尔“DataScale”名称-值对。

例子:托尔= 0.05

例子:托尔= 1 e-8

例子:托尔=每股收益

数据类型:|

名称-值对的观点

指定逗号分隔的可选对名称,值参数。的名字参数名称和价值对应的值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:C = uniquetol(“ByRows”,真的)

输出索引类型,指定为逗号分隔的对,由“OutputAllIndices”,要么(默认),真正的0,或1uniquetol解释数字0作为和数字1作为真正的

OutputAllIndices真正的,uniquetol函数返回第二个输出,IA,作为单元格数组。单元格数组包含的索引所有元素一个在可容忍的价值范围内C.也就是说,每个细胞在IA中的值C,每个单元格中的值对应于中的位置一个

例子:[C IA] = uniquetol (tol, OutputAllIndices,真的)

行比较切换,指定为逗号分隔的对,由“ByRows”,要么(默认),真正的0,或1uniquetol解释数字0作为和数字1作为真正的.使用此选项可在中查找行一个这是独一无二的,在容忍范围内。

ByRows真正的

  • 一个必须是二维数组。

  • uniquetol比较的行一个分别考虑每一列。要使两行之间在公差范围内,每列都必须在公差范围内。

  • 在每一行一个排在容忍范围内吗C.然而,没有两排在C都在彼此容忍的范围内。

两行,u而且v,都在可容忍的范围内所有(abs (uv) < = tol *马克斯(abs (A)、[],1))

例子:C = uniquetol (tol, ByRows,真的)

数据的规模,指定为逗号分隔的对,由“DataScale”或者是标量,或者是向量。指定DataScale作为一个数值标量,DS,将公差试验改为abs (uv) < = tol * DS

与the一起使用时ByRows选项时,DataScaleValue也可以是一个向量。在本例中,vector的每个元素都指定DS中的对应列一个.的值DataScale向量是,然后uniquetol中的对应列被忽略一个

例子:C = uniquetol (' DataScale ', 1)

例子:[C IA IC] = uniquetol(“ByRows”,没错,‘DataScale’,(eps(1)每股收益(10)每股收益(100)))

数据类型:|

输出参数

全部折叠

独特的元素一个(在容许范围内),作为向量或矩阵返回。如果一个是行向量吗C也是行向量。否则,C是列向量。中的元素C按升序排序。中的每个元素一个是否在容许的范围内C,但没有两个元素C都在彼此容忍的范围内。

如果ByRows选择是真正的,然后C矩阵中是否包含唯一的行一个.在本例中,在的行C按第一列升序排序。在每一行一个排在容忍范围内吗C但是没有两排C都在彼此容忍的范围内。

索引一个,作为第一次出现重复元素的索引的列向量返回,或者作为单元格数组返回。IA通常满足C = (IA),但下列情况除外:

  • 如果ByRows选择是真正的,然后: C = (IA)

  • 如果OutputAllIndices选择是真正的,然后IA单元格数组和C(我)~ (IA{我})在哪里意味着值在彼此的容忍范围内。

索引C,作为索引的列向量返回。集成电路满足以下属性,其中意味着值在彼此的容忍范围内。

  • 如果一个是向量吗A ~ C (IC)

  • 如果一个是矩阵吗(:) ~ C(集成电路)

  • 如果ByRows选择是真正的,然后: A ~ C (IC)

提示

  • 可以有多个有效的C满足条件的输出,没有两个元素C在彼此容忍范围内吗.的uniquetol函数只返回一个有效输出。

    uniquetol按字典顺序对输入进行排序,然后从最低值开始查找公差范围内的惟一值。因此,改变输入的排序可能会改变输出。例如,uniquetol(一)可能不会得到相同的结果-uniquetol (A)

扩展功能

介绍了R2015a