2015-02-09 54 views
0

看起來這應該很容易,但我一直在努力爭取幾個小時......我有一些相同大小的數組,我想如果兩個元素都包含完全相同的元素,則忽略順序返回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,當我需要讓我知道集合不相同(減去順序)的東西時。

回答

0

這是我終於找到答案的答案。

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

然後如果匹配== 1,則其爲true,否則爲false。好像應該是在套更好的東西,基於不排序

1

您還可以使用setdiff兩次:

d1 = setdiff(a,b); 
d2 = setdiff(b,a); 
match = (length(d1)+length(d2)==0); 

ab相等,當且僅當兩個組的差別是空的。