uniquetol
容忍范围内的独特价值
描述
例子
存在数值误差的唯一元素
创建一个向量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
以点为中心
.
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)
对Vector中的相似值进行平均
创建一个随机数向量,并使用公差确定唯一元素。指定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
按列指定DataScale
创建一组随机的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
|1
输出索引类型,指定为逗号分隔的对,由“OutputAllIndices”
,要么假
(默认),真正的
,0
,或1
.uniquetol
解释数字0
作为假
和数字1
作为真正的
.
当OutputAllIndices
是真正的
,uniquetol
函数返回第二个输出,IA
,作为单元格数组。单元格数组包含的索引所有元素一个
在可容忍的价值范围内C
.也就是说,每个细胞在IA
中的值C
,每个单元格中的值对应于中的位置一个
.
例子:[C IA] = uniquetol (tol, OutputAllIndices,真的)
“ByRows”
- - - - - -行比较切换
假
(默认)|真正的
|0
|1
行比较切换,指定为逗号分隔的对,由“ByRows”
,要么假
(默认),真正的
,0
,或1
.uniquetol
解释数字0
作为假
和数字1
作为真正的
.使用此选项可在中查找行一个
这是独一无二的,在容忍范围内。
当ByRows
是真正的
:
一个
必须是二维数组。uniquetol
比较的行一个
分别考虑每一列。要使两行之间在公差范围内,每列都必须在公差范围内。在每一行
一个
排在容忍范围内吗C
.然而,没有两排在C
都在彼此容忍的范围内。
两行,u
而且v
,都在可容忍的范围内所有(abs (uv) < = tol *马克斯(abs (A)、[],1))
.
例子:C = uniquetol (tol, ByRows,真的)
“DataScale”
- - - - - -规模的数据
标量|向量
数据的规模,指定为逗号分隔的对,由“DataScale”
或者是标量,或者是向量。指定DataScale
作为一个数值标量,DS
,将公差试验改为abs (uv) < = tol * DS
.
与the一起使用时ByRows
选项时,DataScale
Value也可以是一个向量。在本例中,vector的每个元素都指定DS
中的对应列一个
.的值DataScale
向量是正
,然后uniquetol
中的对应列被忽略一个
.
例子:C = uniquetol (' DataScale ', 1)
例子:[C IA IC] = uniquetol(“ByRows”,没错,‘DataScale’,(eps(1)每股收益(10)每股收益(100)))
数据类型:单
|双
输出参数
C
-独特的元素一个
向量|矩阵
独特的元素一个
(在容许范围内),作为向量或矩阵返回。如果一个
是行向量吗C
也是行向量。否则,C
是列向量。中的元素C
按升序排序。中的每个元素一个
是否在容许的范围内C
,但没有两个元素C
都在彼此容忍的范围内。
如果ByRows
选择是真正的
,然后C
矩阵中是否包含唯一的行一个
.在本例中,在的行C
按第一列升序排序。在每一行一个
排在容忍范围内吗C
但是没有两排C
都在彼此容忍的范围内。
IA
——指数一个
列向量|单元格数组
索引一个
,作为第一次出现重复元素的索引的列向量返回,或者作为单元格数组返回。IA
通常满足C = (IA)
,但下列情况除外:
如果
ByRows
选择是真正的
,然后: C = (IA)
.如果
OutputAllIndices
选择是真正的
,然后IA
单元格数组和C(我)~ (IA{我})
在哪里~
意味着值在彼此的容忍范围内。
集成电路
——指数C
列向量
索引C
,作为索引的列向量返回。集成电路
满足以下属性,其中~
意味着值在彼此的容忍范围内。
如果
一个
是向量吗A ~ C (IC)
.如果
一个
是矩阵吗(:) ~ C(集成电路)
.如果
ByRows
选择是真正的
,然后: A ~ C (IC)
.
提示
可以有多个有效的
C
满足条件的输出,没有两个元素C
在彼此容忍范围内吗.的uniquetol
函数只返回一个有效输出。uniquetol
按字典顺序对输入进行排序,然后从最低值开始查找公差范围内的惟一值。因此,改变输入的排序可能会改变输出。例如,uniquetol(一)
可能不会得到相同的结果-uniquetol (A)
.
扩展功能
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
使用注意事项和限制:
的
“ByRows”
而且“OutputAllIndices”
不支持选项。金宝app不支持64位整数。金宝app
有关更多信息,请参见在图形处理器上运行MATLAB函数(并行计算工具箱)。
介绍了R2015a
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。