找到A> B的行的有效方法

Ele*_*ore 1 performance matlab matrix

假设M是一个矩阵,其中每一行代表一个N对象池的随机序列,例如,

1 2 3 4
3 4 1 2
2 1 3 4
Run Code Online (Sandbox Code Playgroud)

如何有效地查找数字A前面的所有行B

例如,A=1B=2; 我想检索第一行和第二行(1之前的行2)

Lui*_*ndo 5

你去:

[iA jA] = find(M.'==A);
[iB jB] = find(M.'==B);
sol = find(iA<iB)
Run Code Online (Sandbox Code Playgroud)

请注意,这是有效的,因为根据问题规范,每个数字都保证在每一行中出现一次.


要查找M具有给定前缀的行(在注释中请求):prefix设为带有搜索前缀的向量(例如prefix = [1 2]):

find(all(bsxfun(@eq, M(:,1:numel(prefix)).', prefix(:))))
Run Code Online (Sandbox Code Playgroud)