在matlab中比较不同类型的单元阵列

时间:2012-12-28 11:46:09

标签: matlab cell-array

前提:我发现了一些似乎与我的问题有关的东西,但我不确定如何使用它,因此我问了一个新问题。

我有一个单元矩阵,称之为A,看起来像这样:

[ 'string' 'string' 'number'

'string' 'string' 'number'

........................... ]

我需要将我刚刚创建的单元格数组(称为B = ['string' 'string' 'number'])与矩阵A进行比较,以查看B是否已存在于其中。如果我尝试使用ismember,matlab会返回错误,因为参数不是字符串。

我该怎么办?

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

你的问题有点不清楚,所以这个答案只有在这些假设是:

时才有效
  • 你真的是指第二维中的单元数组而不是char数组 你的代码片段建议。
  • 您的单元格数组A和B在第二个数组中具有相同数量的元素 尺寸。

以下行将返回1和0的列向量,其中1表示B元素与X中的行匹配:

sum(cellfun(@isequal,X,repmat(B,size(X,1),1)),2)==size(X,2)

简要说明:

  • repmat将B复制为X的大小。
  • cellfun比较两个矩阵中的每个元素。
  • sum计算每行中字符串匹配的数量。
  • ==检查给定行中的所有元素是否匹配。

希望有所帮助

答案 1 :(得分:1)

不完全确定您拥有哪些变量,但这可能有效:

将所有内容转换为字符串,然后使用ismember,例如:

['string' '_' 'string' '_' num2str(number)]

确保在ismember的两个输入上执行此操作。


根据变量的大小,可能更容易将所有内容(或所有唯一的内容)附加到B,然后再运行unique