我正在寻找一种在更大的矩阵(任意维数)中找到矩阵(模式)的“好”方法。
例子:
total = rand(3,4,5);
sub = total(2:3,1:3,3:4);
现在我希望发生这种情况:
loc = matrixFind(total, sub)
在这种情况下loc
应该变成[2 1 3]
.
现在我只对找到一个点(如果存在)感兴趣,并不担心舍入问题。可以假设sub
“适合”在total
.
这是我如何在 3 维上做到这一点,但感觉好像有更好的方法:
total = rand(3,4,5);
sub = total(2:3,1:3,3:4);
loc = [];
for x = 1:size(total,1)-size(sub,1)+1
for y = 1:size(total,2)-size(sub,2)+1
for z = 1:size(total,3)-size(sub,3)+1
block = total(x:x+size(sub,1)-1,y:y+size(sub,2)-1,z:z+size(sub,3)-1);
if isequal(sub,block)
loc = [x y z]
end
end
end
end
我希望为任意数量的维度找到一个可行的解决方案。