我从另一篇文章中简化了这个问题。将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。
答案 0 :(得分:1)
<强>步骤:强>
⓵取 A
的transpose
和 B
。
⓶使用cell2mat
将它们转换为矩阵。
如果 A
是 B
的成员,请使用ismember
逐行确定
⓸使用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 :(得分:1)
感谢Sardar_Usama提供解决方案。在此期间,我也提出了另一种解决方案。
Acell = cellfun(@mat2str,A,'UniformOutput',false)
Bcell = cellfun(@mat2str,B,'UniformOutput',false)
isAsubsetOfB = all(ismember(Acell,Bcell))