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