之间差异的名单我有2个细胞如何提供2所列出
exp = {'test','tat','toto'};
act = {'test','toto','tat','pto'};
,并想检查这些名单是相等的。如果他们没有相同数量的元素,我怎么能提供差异列表?
之间差异的名单我有2个细胞如何提供2所列出
exp = {'test','tat','toto'};
act = {'test','toto','tat','pto'};
,并想检查这些名单是相等的。如果他们没有相同数量的元素,我怎么能提供差异列表?
随着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'
总之,使用setdiff
;请参阅文档,有一个关于你想要做什么的例子。
编辑
说明需要有关setdiff
。根据文档:
C = setdiff(A,B)返回A中的数据,是不是在B.
这句话必须完全理解:它返回的不是数据在B中。因此setdiff
与它的参数不是对称的!对于你的问题,如果A的所有元素都在B中,即使B较大,结果集也是空的。
要获得两个集合之间的差异,换句话说,你想有一个对称函数WRT他们的论点,MATLAB提供了另一种功能,setxor
:
C = setxor(A,B)返回的数据和B不在它们的交点(对称差)。
它返回一个emty字符串,而我有这两个字符的差异 – lola 2015-01-21 10:57:47
您可以使用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
您想在您的示例中使用3x4结果吗?或者哪个尺寸? – 2015-01-21 10:59:19
@LuisMendo:我想获得差异列表,例如我将这些单元格转换为字符并想要比较并获得列表:'pto'在我的示例中为 – lola 2015-01-21 11:10:22
@lola:根据您的意见在答案上:“* 33x19char和34x19char *”,“*这些2 char *之间的差异”,我想你正在做'char(exp)'将字符串转换为'char'数组。这将生成一个字符矩阵,并用空格填充空白部分。 这不是你应该做的!保持单元格内的字符串。 – knedlsepp 2015-01-21 14:27:52