我有一个矩阵和一个向量,我想将矩阵的每一列与向量进行比较——我想要得到的是等于向量的列数。例子:
matrix M=1 1 0 1
1 0 0 0
0 1 1 0
vector v= 1 0 1
结果应该是 2(因为 M 的第二列等于向量 v)
我怎么做?
octave> M = [1 1 0 1; 1 0 0 0; 0 1 1 0];
octave> v = [1 0 1];
octave> sum(M == repmat(v', 1, 4))
ans =
1 3 2 2
octave> sum(M == repmat(v', 1, 4)) == size(M, 1)
ans =
0 1 0 0
octave> find(sum(M == repmat(v', 1, 4)) == size(M, 1))
ans = 2
使用广播 ( bsxfun
) 将向量与矩阵中的每一行进行比较。那么find
哪一行是all
真的
find (all (bsxfun (@eq, m, v')))