查找矩阵的单元格数组中的元素索引

时间:2015-05-17 21:13:18

标签: arrays matlab matrix cell-array

我想在矩阵的单元格数组中找到特定矩阵的索引(在行和列中),例如,如果我有

A = [2 3;4 1]

B = {[2 2;1 1] [2 3;4 1] [1 1;1 1]}

然后我想返回2(因为B{2}==A)。

我想在没有for的情况下解决这个问题,虽然我不必,但是单元格数组基本上很小,但我还是希望不用for来做。

我搜索了这个并在SO上找到了thisthis,但他们的解决方案仅适用于我在这里没有的字符串。

那么如何在没有for - 循环?

的情况下解决这个问题

注意

A是普通矩阵而不是单个元素单元格数组,B是矩阵的单元格数组。

1 个答案:

答案 0 :(得分:4)

一些可能性:

  • 使用cellfunisequal一起测试B的每个元素是否相等:

    find(cellfun(@(x) isequal(x,A), B))
    
  • 如果所有矩阵具有相同的大小:连接成3D数组(或者更好,从头开始使用3D数组),并使用bsxfun进行比较:

    find(all(all(bsxfun(@eq, A, cat(3, B{:})),1),2))