八度 - 匹配数组,忽略顺序

时间:2015-02-09 01:28:58

标签: arrays set match octave

看起来这应该很简单,但我现在已经苦苦挣扎了几个小时了...我有几个相同大小的数组,如果两个元素包含的话,我想返回true完全相同的元素,忽略顺序。

[1,2], [2,1] # should return true
[1,2], [2,2] # should return false

intersect()失败,因为intersect([2,2], [1,2])intersect([2,2], [2,2])都会返回2,而我无法区分出第一个案例对我来说是错误的,而第二种情况是真的。

setdiff失败,因为订单很重要。 setdiff([1,2], [2,2])会返回1,因此它会显示这些集之间存在差异并提供我需要的信息。但是,setdiff([2,2], [1,2])返回emtpy,当我需要的东西让我知道这些集合不相同(减去顺序)。

2 个答案:

答案 0 :(得分:1)

您还可以使用setdiff两次:

d1 = setdiff(a,b);
d2 = setdiff(b,a);
match = (length(d1)+length(d2)==0);
当且仅当两个设置差异都为空时,

ab才相等。

答案 1 :(得分:0)

这是我最终解决的答案。

match = Sort(x) == Sort(y)
match = union(1, match)

然后如果匹配== 1,则为true,否则为false。似乎应该有更好的东西,基于集合而不是排序