我有2个细胞
exp = {'test','tat','toto'};
act = {'test','toto','tat','pto'};
并想检查这些列表是否相等。如果没有相同数量的元素,我怎么能提供差异列表?
答案 0 :(得分:2)
使用setdiff
输入的顺序很重要。 setdiff(A,B)
会返回A
中不在B
中的条目列表,但不会返回B
中不在A
的条目exp = {'test','tat','toto'};
act = {'test','toto','tat','pto'}
setdiff(exp,act); % empty because there is nothing in exp which isn't in act
setdiff(act,exp); %returns 1 x 1 cell, 'pto'.
。
setxor(A,B)
相反,请使用A
,它返回的值不在B
和exp = {'test','tat','toto','pta'};
act = {'test','toto','tat','pto'};
setxor(exp,act) % returns 'pta','pto'
的交集处。输入顺序并不重要:
{{1}}
答案 1 :(得分:0)
简而言之,请使用setdiff
;看到文档,有一个关于你想要做什么的例子。
修改强>
需要解释setdiff
。根据文件:
C = setdiff(A,B)返回A中不在B中的数据。
必须准确理解这句话:它返回的A不是B的数据。所以setdiff
与其参数不对称!对于您的问题,如果A的所有元素都在B中,即使B更大,结果集也是空的。
为了得到两个集合之间的差异,换句话说,你想要一个对称函数和它们的参数,Matlab提供了另一个函数,setxor
:
C = setxor(A,B)返回不在其交点中的A和B的数据(对称差)。
答案 2 :(得分:0)
您可以使用setdiff命令。
exp = {'test', 'tat', 'toto'};
act = {'test', 'toto', 'tat', 'pto'};
diff = setdiff(exp, act);
您可以在文档中找到它: http://www.mathworks.com/help/matlab/ref/setdiff.html?refresh=true