文件

uniquetol.

公差范围内唯一值

句法

C = Uniquetol(A,Tol)
c = Uniquetol(a)
[c,ia,ic] = unquetol(___
[___) = uniquetol (___、名称、值)

描述

例子

C= uniquetol (一种返回的独特元素一种用宽容.两个值,V.,在容许范围内,如果

ABS(U-V)<= TOL *最大(ABS(A(:)))

那是,uniquetol.尺度的基于该数据的大小的输入。

uniquetol.类似于独特的.然而独特的执行确切的比较,uniquetol.使用容差执行比较。

例子

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

例子

[CIA.我知道了) = uniquetol (___返回索引向量IA.我知道了,这样C = A(IA)A〜C(IC)(或者A(:)〜C(IC)如果一种是一个矩阵),在哪里意味着这些价值观在相互容忍范围内。您可以在前面的语法中使用任何输入参数。

例子

[___) = uniquetol (___名称,价值使用以前语法中的任何输入或输出参数组合使用一个或多个名称 - 值对参数指定的其他选项。例如,Uniquetol(A,'Byrows',True)确定在唯一的行一种

例子

全部收缩

创建一个向量,X.获得第二个向量,y通过改变和不改变X.这种转变介绍了循环差异y

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

验证Xy是不同的。

X-Y.
ans =.1.0E-14 * 0.0444 0 0 0 0 0.0.3553

独特的找到级联向量的独特元素[X; Y].的独特的功能进行精确的比较,并确定一些值X不完全等于值y.这些是具有非零差异的相同元素X-Y..因此,C包含的值是出现是重复的。

c =唯一([x; y])
c =3.1416 3.1416 6.2832 9.4248 12.5664 15.7080 18.8496 18.8496

uniquetol.使用小公差进行比较。uniquetol.将容差的元素视为平等。

C = uniquetol([X; Y])
C =3.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 =日志10(10 ^ A);

独特的找到唯一的行一种B..的独特的功能进行精确的比较,并确定在连接矩阵的所有行的[A; B]是唯一的,即使某些行只相差很小。

唯一的([A; B],'行'
ans =.0.0500 0.1100 0.1800 0.0500 0.1100 0.1800 0.1800 0.2100 0.2900 0.1800 0.2100 0.2900 0.3400 0.3600 0.4100 0.3400 0.3600 0.4100 0.4600 0.5200 0.7600 0.4600 0.5200 0.7600

uniquetol.找到了唯一的行。uniquetol.对待公差范围内的行。

Unquetol([a; b],'byrows',真的)
ans =.0.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:6) *π;y = 10 ^ log10 (x);

结合Xy进入单个载体,一种.用uniquetol.重建一种中,治疗是公差为同等范围内的值。

a = [x; y]
A =3.1416 6.2832 9.4248 12.5664 15.7080 18.8496 3.1416 6.2832 9.4248 12.5664
[C IA IC] = uniquetol(一个);newA = C(集成电路)
纽瓦=3.1416 6.2832 9.4248 12.5664 15.7080 18.8496 3.1416 6.2832 9.4248 12.5664

您可以使用纽瓦==使用像确切的平等或功能是平等的或者独特的在随后的代码。

D1 =唯一的(A)
D1 =3.1416 3.1416 6.2832 9.4248 12.5664 15.7080 18.8496 18.8496
D2 =唯一的(纽瓦)
D2 =3.1416 6.2832 9.4248 12.5664 15.7080 18.8496

创建一个二维样本点云,限定在半径范围内0.5以点为中心

X =兰特(10000,2);insideCircle = SQRT((X(:,1) -  5)^ 2 +(X(:。。,2) -  5)^ 2)<0.5;Y = X(insideCircle,:);

找到一组减少的点,使得原始数据集的每个点在一个点的容差范围内。

TOL = 0.05;C = uniquetol(Y,TOL,'byrows',真的);

绘制减少集点作为原始数据集的顶部红点。红点是原始数据集的所有成员。所有红点至少是一个距离分开。

绘图(Y(:,1),Y(:,2),'。') 抓住平等的情节(C (: 1), C (:, 2),'.r''MarkerSize',10)

创建随机数的向量,并确定用宽容的独特元素。指定OutputAllIndices作为真的返回在唯一值的容差范围内的元素的所有索引。

一个=兰德(100 1);[C IA] = uniquetol(1飞行,'OutputalAllindices',真的);

发现是值的容差范围内的要素的平均值C(2)

C(2)
ANS = 0.0318.
ALLA = A(IA {2})
alla =0.0357 0.0318 0.0344
AVEA =平均值(ALLA)
Avea = 0.0340.

默认情况下,uniquetol.使用形式的糖耐量试验ABS(U-V)<= TOL * DS, 在哪里DS.自动地基于所述输入数据的大小。您可以指定不同的DS.与之使用的价值DataScale选项。但是,绝对的宽容(哪里DS.是一个标量)根据输入数据的大小不能扩展。

首先,比较两个距离的小值eps.分开。指定DS.求公差内方程:abs (uv) < = 10 ^ 6

X = 0.1;Unquetol([x,exp(log(x))],10 ^ -6,'DataScale',1)
ANS = 0.1000

接下来,增加值的幅度。计算中的圆关闭错误EXP(日志(X))与值的大小成比例,具体到EPS(x).即使这两个大值是一段距离eps.从彼此,EPS(x)现在更大了。所以,10 ^ -6不再是合适的宽容。

x = 10 ^ 10;Unquetol([x,exp(log(x))],10 ^ -6,'DataScale',1)
ans =.1.0e+10 * 1.0000

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

格式Y = [0.1 10 ^ 10];uniquetol([Y,实验值(日志(Y))])
ANS = 1.0E + 10 * 0.00000000000000001 1.000000000000000

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

  • 指定ByRows作为真的因为点坐标是一种

  • 指定OutputAllIndices作为真的返回指数具有相互的容差范围内的x坐标的所有点。

  • 指定DataScale作为[1款]使用绝对容限X- 协调而忽略了y-协调。

a = rand(1000,2);DS = [1款];[c,ia] = Unquetol(a,0.1,'byrows',真的,......'OutputalAllindices',真的,'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.认为他们是平等的。

两个值,V.,在容许范围内,如果abs (uv) < = tol *马克斯(abs ())

要指定一个绝对的宽容,同时指定'DataScale'名称 - 值对。

例子:tol = 0.05

例子:TOL = 1E-8

例子:托尔=每股收益

数据类型:单身的|

名称值对参数

指定可选的逗号分离对名称,价值参数。姓名是参数名称和价值是相应的价值。姓名必须出现内单引号(“”)。您可以以任何顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:C = uniquetol(A, 'ByRows',真)

全部收缩

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

OutputAllIndices真的, 这uniquetol.函数返回第二个输出,IA.作为单元阵列。单元格数组包含指数全部元素一种这是一个值的容差范围内C.也就是说,在每个单元IA.对应于一个值C,每个单元格中的值对应于位置一种

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

行比较切换,指定为逗号分隔对组成'byrows',要么错误的(默认),真的0., 或者1uniquetol.解释数字0.作为错误的和数字1作为真的.使用此选项可以找到行一种这是独一无二的,公差范围内。

ByRows真的

  • 一种必须是2-D阵列。

  • uniquetol.比较行的行一种通过分别考虑每一列。为了使两行数据在公差范围内,每一列都必须在公差范围内。

  • 每一行一种是否在公差范围内C.然而,没有两行C都在容忍范围之内。

两行,V.,在容许范围内,如果所有(abs (uv) < = tol *马克斯(abs (A)、[],1))

例子:c = Uniquetol(A,Tol,'Byrows',True)

数据的规模,指定为逗号分隔对组成'DataScale'以及一个标量或矢量。指定DataScale作为一个数值标量,DS.,改变糖耐量试验是ABS(U-V)<= TOL * DS

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

例子:C = Uniquetol(a,'dataScale',1)

例子:[C,IA,IC] = uniquetol(A, 'ByRows',真, 'DataScale',[EPS(1)EPS(10)EPS(100)])

数据类型:单身的|

输出参数

全部收缩

在独特的元素一种(公差内),返回为矢量或矩阵。如果一种是一排矢量,然后C也是一个行向量。否则,C是一个列向量。中的元素C按升序排序。每个元素一种是否在公差范围内C,但没有两个元素C都在容忍范围之内。

如果是ByRows选项是真的, 然后C是包含唯一行的矩阵一种.在这种情况下,该行中C按第一列升序排序。每一行一种是否在公差范围内C,但不能排进两排C都在容忍范围之内。

索引一种时,返回作为指标的重复元件的第一次出现,或者作为一个单元阵列的列向量。IA.通常满足C = A(IA),以下例外:

  • 如果是ByRows选项是真的, 然后c = a(ia,:)

  • 如果是OutputAllIndices选项是真的, 然后IA.是单元阵列和c(i)〜a(ia {i})在哪里意味着这些价值观在相互容忍范围内。

索引C,作为索引的列向量返回。我知道了满足以下属性,其中意味着这些价值观在相互容忍范围内。

  • 如果一种是一个矢量,然后A〜C(IC)

  • 如果一种是一个矩阵A(:)〜C(IC)

  • 如果是ByRows选项是真的, 然后A〜C(IC,:)

提示

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

    uniquetol.排列lexically排序,然后从最低值开始,以在容差内找到唯一的值。结果,改变输入的排序可以改变输出。例如,uniquetol(-A)可能不会得到和-uniquetol(A)

介绍了在R2015a

是这个主题有帮助吗?