用于匹配巨大矩阵中的行的高效优化代码

时间:2014-04-23 18:26:55

标签: performance matlab row matching

我有一个巨大的矩阵,我需要做一些匹配操作。这里是我编写的代码并且工作正常,但我认为有一些空间可以使其更优化或编写另一个代码来在更短的时间内完成匹配。你可以帮帮我吗?

rowsMatched = find(bigMatrix(:, 1) == matchingRow(1, 1) 
        & bigMatrix(:, 2) == matchingRow(1, 2) 
        & bigMatrix(:, 3) == matchingRow(1, 3))

此代码的问题是我无法使用&&操作数。因此,如果其中一列不匹配,程序仍会检查下一个条件。我怎么能避免这个?

更新:以下是解决此问题的方法:

rowsMatched = find(all(bsxfun(@eq, bigMatrix, matchingRow),2));

谢谢

1 个答案:

答案 0 :(得分:3)

您可以使用BSXFUN以矢量化方式执行此操作:

rowsMatched = find(all(bsxfun(@eq, bigMatrix, matchingRow),2));

请注意,它适用于任意数量的列,只有matchingRow应具有与bigMatrix相同的列数。