检查矩阵的单元格是否是另一个矩阵单元的子集

时间:2016-10-27 02:50:59

标签: matlab cells

我从另一篇文章中简化了这个问题。将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。

2 个答案:

答案 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))