Octave支持几个基本的集合运算。Octave可以计算两个集合的并集、交集和差。Octave还支持Exclusive或集合运算。
集合运算的函数都以相同的方式工作,即接受两个输入集合并返回第三个集合。举个例子,假设a和b包含两个集合,则
并集(a,b)
计算两个集合的并集。
最后,可以使用ismember作用因为集合是有序的,所以这个运算是非常有效的,并且是O(log2(n))阶,这比查找具有O(n)阶的函数。
c = intersect (a, b) ¶c = intersect (a, b, "rows") ¶c = intersect (…, "sorted") ¶c = intersect (…, "stable") ¶c = intersect (…, "legacy") ¶[c, ia, ib] = intersect (…) ¶返回两者通用的唯一元素a和b.
如果a和b都是行向量,则返回一个行向量;否则,返回一个列向量。输入也可以是字符串的元胞数组。
如果可选输入行则返回的公共行a和b。输入必须是二维数字矩阵才能使用此参数。
可选参数已排序/稳定的控制唯一值在输出中显示的顺序。默认为已排序并且输出中的值按升序排列。备选方案稳定的保留在输入中找到的顺序。
如果指定,返回列索引向量ia和ib使得c= a(ia)和c= b(ib).
编程说明:输入标志遗产将算法更改为与兼容MATLABR2012b之前的版本。
c = union (a, b) ¶c = union (a, b, "rows") ¶c = union (…, "sorted") ¶c = union (…, "stable") ¶c = union (…, "legacy") ¶[c, ia, ib] = union (…) ¶返回中的唯一元素a或b.
如果a和b都是行向量,则返回一个行向量;否则,返回一个列向量。输入也可以是字符串的元胞数组。
如果可选输入行则返回中间的行a或b。输入必须是二维数字矩阵才能使用此参数。
可选参数已排序/稳定的控制唯一值在输出中显示的顺序。默认为已排序并且输出中的值按升序排列。备选方案稳定的保留在输入中找到的顺序。
可选输出ia和ib是列索引向量,这样a(ia)和b(ib)是不相交的集合,其并集为c.
编程说明:输入标志遗产将算法更改为与兼容MATLABR2012b之前的版本。
c = setdiff (a, b) ¶c = setdiff (a, b, "rows") ¶c = setdiff (…, "sorted") ¶c = setdiff (…, "stable") ¶c = setdiff (…, "legacy") ¶[c, ia] = setdiff (…) ¶返回中的唯一元素a不在b.
如果a是一个行向量,返回一个行向量;否则,返回列向量。输入也可以是串的元胞数组。
如果可选输入行则返回中的行a不在b。使用此参数时,输入必须是2-D数字矩阵。
可选参数已排序/稳定的控制唯一值在输出中显示的顺序。默认为已排序并且输出中的值按升序排列。备选方案稳定的保留在输入中找到的顺序。
如果指定,返回索引向量ia使得c= a(ia).
编程说明:输入标志遗产将算法更改为与兼容MATLABR2012b之前的版本。
c = setxor (a, b) ¶c = setxor (a, b, "rows") ¶c = setxor (…, "sorted") ¶c = setxor (…, "stable") ¶c = setxor (…, "legacy") ¶[c, ia, ib] = setxor (…) ¶返回集合独有的唯一元素a或b.
如果a和b都是行向量,则返回一个行向量;否则,返回一个列向量。输入也可以是字符串的元胞数组。
如果可选输入行则返回排他的集合a和b。输入必须是二维数字矩阵才能使用此参数。
可选参数已排序/稳定的控制唯一值在输出中显示的顺序。默认为已排序并且输出中的值按升序排列。备选方案稳定的保留在输入中找到的顺序。
可选输出ia和ib是列索引向量,这样a(ia)和b(ib)是不相交的集合,其并集为c.
编程说明:输入标志遗产将算法更改为与兼容MATLABR2012b之前的版本。
tf = ismember (a, s) ¶tf = ismember (a, s, "rows") ¶[tf, s_idx] = ismember (…) ¶返回逻辑矩阵tf形状与相同a如果元素在a在中找到s如果不是,则为false(0)。
如果指定第二个输出参数,则索引到s还返回每个匹配元素的。
a=[3,10,1];s=[0:9];[tf,s_idx]=i成员(a,s)⇒ tf=[1,0,1]⇒ s_idx=[4,0,2]
输入a和s也可以是元胞数组。
a={“abc”};s={“abc”,“def”};[tf,s_idx]=i成员(a,s)⇒ tf=1⇒ s_idx=1如果可选的第三个参数行则比较rowsina中有行s。输入必须是具有相同列数的二维矩阵才能使用此参数。
a=[1:3;5:7;4:6];s=[0:2;1:3;2:4;3:5;4:6];[tf,s_idx]=ismember(a,s,“行”)⇒ tf=逻辑([1;0;1])⇒ s_idx=[2;0;5];
tf = ismembertol (a, s) ¶tf = ismembertol (a, s, tol) ¶tf = ismembertol (a, s, name, value) ¶[tf, s_idx] = ismembertol (…) ¶检查值是否是公差范围内集合的成员。
此函数返回一个逻辑矩阵tf形状与相同a这是真的(1)其中的元素a接近s在公差范围内tol如果不是,则为false(0)。如果tol未指定,默认公差为1e-6使用。
如果指定第二个输出参数,则索引到s还返回每个匹配元素的。
输入a和s必须是数值。
a=[3,10,1];s=[0:9];[tf,s_idx]=ismembertol(a,s)⇒ tf=[1,0,1]⇒ s_idx=[4,0,2]
可以提供可选的属性/值对来更改函数的行为。该属性可以是以下字符串之一:
ByRows如果设置为错误的(默认),中的所有元素a和s单独处理。如果设置为真的, tf将真的中的每一行a与中的一行相匹配s在允许的范围内。两排,u和v,如果满足条件,则在公差范围内all(abs(u-v)<=tol*max(abs([a;s])).
输出所有索引如果设置为错误的默认s_idx包含其中一个匹配项的索引。如果设置为真的, s_idx是一个元胞数组,包含中所有元素的索引s在中相应值的公差范围内a.
数据缩放提供的价值DS用于将公差测试中的比例因子更改为abs(u-v)<=tol*DS。默认情况下,中的最大溶质值a和s用作比例因子。
用例
s=[1:6].'*圆周率;a=10^log10(x);[tf,s_idx]=ismembertol(a,s);
p = powerset (a) ¶p = powerset (a, "rows") ¶计算集的幂集(所有子集)a.
这套a必须是数字矩阵或字符串的元胞数组。输出将始终是向量或字符串的元胞数组。
带有可选参数行,集合的每一行a被认为是集合的一个元素。输入必须是二维数字矩阵才能使用此参数。
版权所有 © 2024-2025 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-2