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



我有一个巨大的矩阵,需要对它进行一些匹配运算。这是我写的代码,它运行得很好,但我认为还有一些空间可以让它更优化,或者写另一个代码,在更短的时间内完成匹配。你能帮我一下吗?

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));

感谢

您可以使用BSXFUN以矢量化的方式进行:

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

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

最新更新