在矩阵内查找矢量元素的列位置

时间:2015-02-13 20:57:53

标签: matlab matrix indices

给出一个像a = [2 5 9]这样的向量和一个矩阵,如

    8  11  5 
b = 2   6  1
    4   9  3

找到b的哪一列包含a的每个元素的最佳方法是什么?在此示例中,我希望输出[1 3 2],因为2位于第一列,5位于第三列,9位于第二列柱。出于我的目的,可以安全地假设一个数字只能出现在一列中。

3 个答案:

答案 0 :(得分:4)

一种方法 -

[colID,~] = find(squeeze(any(bsxfun(@eq,b,permute(a,[1 3 2])),1)))

或者,如果您想避免squeezeany -

[~,colID,~] = ind2sub([size(b) numel(a)],find(bsxfun(@eq,b(:),a)))

答案 1 :(得分:3)

另一种方法是使用ismember

A = [2 5 9];
B = [8 11 5; 2 6 1; 4 9 3];
[~, ind] = ismember(A,B);
[~, col] = ind2sub(size(B), ind)

col = 

1   3   2

答案 2 :(得分:2)

另一种方法:

[~, index] = ismember(a, b);
[row, col] = ind2sub(size(b, 1), index);