之間差異的名單我有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