27集合

Octave具有许多用于管理数据集的函数。集合被定义为唯一元素的集合,通常从按升序排序的数字向量表示。任何向量或矩阵都可以通过调用unique实现。但是,没有必要显式创建集合,因为所有对集合进行操作的函数都会在继续操作之前将其输入转换为集合。

 
: y = unique (x)
: y = unique (x, "rows")
: y = unique (…, "sorted")
: y = unique (…, "stable")
: [y, i, j] = unique (…)
: [y, i, j] = unique (…, "first")
: [y, i, j] = unique (…, "last")
: [y, i, j] = unique (…, "legacy")

返回的唯一元素x.

如果输入x是列向量,则返回列向量;否则,返回一个行向量。x也可以是环的元胞数组。

如果指定可选参数"rows",则返回x的唯一行。输入必须是二维数字矩阵才能使用此参数。

可选参数"sorted"/"stable"控制唯一值在输出中显示的顺序。默认为"sorted"并且输出中的值按升序排列。备选方案"stable"保留输入x中的顺序.

如果指定,返回列索引向量ij使得y = x(i)x = y(j).

此外,如果指定输出参数i,且指定输入参数是"first""last",那么如果取值为"last",则返回最大索引i,否则,如果取值为"first",则返回最小索引。默认为"first".

示例1:排序顺序

unique ([3, 1, 1, 2])
⇒ [1, 2, 3]
unique ([3, 1, 1, 2], "stable")
⇒ [3, 1, 2]

示例2:索引选择

[~, i] = unique ([3, 1, 1, 2], "first")
⇒ i = [2; 4; 1]
[~, i] = unique ([3, 1, 1, 2], "last")
⇒ i = [3; 4; 1]

编程说明:输入标志位"legacy"将算法更改为与兼容MATLABR2012b之前的版本。具体而言,索引排序标志更改为"last",以及输出的形状i, j将遵循输入x的形状,而不总是列向量。

详见: uniquetol, union, intersect, setdiff, setxor, ismember.

广告
 
: c = uniquetol (A)
: c = uniquetol (A, tol)
: c = uniquetol (…, property, value)
: [c, ia, ic] = uniquetol (…)

返回在误差范围范围内tol的唯一元素A.

如果abs (x - y) <= tol * max (abs (A(:))),那么两个值xy在相对误差范围内。

输入A必须是实数(非复数)浮点类型(双精度或单精度)。

如果tol未指定,对于双精度输入,默认误差范围为1e-12,对于单精度输入,则为1e-6。

也可以使用以下可选的键/值对来调用该函数。键/值对必须在其他输入参数之后传递:

"ByRows" (default: false)

当为true时,返回A的唯一行. A必须是二维数组才能使用此参数。对于行,唯一性条件更改为all (abs (x - y) <= tol*max (abs (A),[],1)),其将一行的每一列分量与列特定误差进行比较。

广告
"DataScale"

误差范围测试更改为abs (x - y) <= tol*DS,这里的DS是向量,除非属性"ByRows"为真。那样的话DS可以是标量,也可以是长度等于A中列数的向量。如果DS使用值1.0,那么将误差范围从相对误差范围更改为绝对误差范围。使用值Inf将禁用测试。

广告
"OutputAllIndices" (default: false)

当为真时,ia是一个元胞数组(而不是向量),包含A中的在误差范围C内的全部的元素。也就是说,ia中的每个数组对应于C中的单个唯一值,并且每个数组中的值对应于A中的位置.

广告

如果输入A是一个行向量,那么输出c是行向量。对于所有其他情况,都会返回一个列向量。

可选输出ia是列索引向量,使得c = A(ia)。如果"ByRows"属性是true,条件为c = A(ia, :)。如果"OutputAllIndices"属性为true,则值A(ia{i})都在唯一值的误差范围范围内c(i).

如果A是一个向量,可选输出ic是列索引向量,那么A = c(ic)。当A是矩阵,A(:) = c(ic)。如果"ByRows"属性为true,则A = c(ic,:).

示例:小的舍入误差需要uniquetol,而不使用unique

x = [1:5];
## Inverse_Function (Function (x)) should return exactly x
y = exp (log (x));
D = unique ([x, y])
⇒ [1   2   3   3   4   5   5]
C = uniquetol ([x, y])
⇒ [1   2   3   4   5]

详见: unique, union, intersect, setdiff, setxor, ismember.

广告

版权所有 © 2024-2025 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-2