1

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

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

[ 'string' 'string' 'number'

'string' 'string' 'number'

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

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

我该怎么办?

谢谢您的帮助

4

2 回答 2

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 计算每行中字符串匹配的数量。
  • == 检查给定行中的所有元素是否匹配。

希望能帮助到你

于 2012-12-28T12:38:53.060 回答
1

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

把所有东西都变成一个字符串,然后使用ismember,例如:

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

确保对 ismember 的两个输入都执行此操作。


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

于 2012-12-28T12:25:16.200 回答