2016-10-27 39 views
0

我從另一篇文章簡化了這個問題。定義如下的A和B檢查一個矩陣單元是否是另一個矩陣單元的子集

A = {[1 1 1],[2 3 3]} 

B = {[1 1 1],[2 3 3],[3 3 2]} 

A是兩個陣列的1x2單元; B是包含三個陣列的1x3單元。

我試圖寫一段代碼,它將A和B作爲輸入,如果A是B(它在上面的例子中)的成員,則輸出1,否則輸出0。

回答

1

步驟:

⓵取ABtranspose
⓶使用cell2mat將它們轉換爲矩陣。
⓷使用ismember由行確定行是否AB或不
⓸使用all的成員,以確定是否A所有行都是B與否。

代碼:

A = cell2mat(A.'); B = cell2mat(B.'); 
output = ismember(A,B,'rows'); 
output = all(output) 

的一行代碼:
你可以寫在上面一行爲:all(ismember(cell2mat(A.'), cell2mat(B.'),'rows'))

1

謝謝Sardar_Usama一個解決方案。在此期間,我也提出了一個備用解決方案。

Acell = cellfun(@mat2str,A,'UniformOutput',false) 
Bcell = cellfun(@mat2str,B,'UniformOutput',false) 
isAsubsetOfB = all(ismember(Acell,Bcell)) 
相關問題