在矩阵元胞数组中查找元素的索引

Find index of element in cell array of matrices

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

A = [2 3;4 1]

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

那我要return2(因为B{2}==A)。

我想在没有for的情况下解决这个问题,虽然我不必这样做,但元胞数组基本上很小,但我想在没有for的情况下解决这个问题。

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

那么如何在没有 for-loop 的情况下解决这个问题?

备注

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

一些可能性:

  • 使用cellfun with isequal测试B的每个元素是否相等:

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

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