より大きなマトリックス(任意の次元数)でマトリックス(パターン)を見つける「良い」方法を探しています。
例:
total = rand(3,4,5);
sub = total(2:3,1:3,3:4);
今、私はこれが起こることを望みます:
loc = matrixFind(total, sub)
この場合loc
、 になるはず[2 1 3]
です。
今のところ、1 つの点 (存在する場合) を見つけることに関心があり、丸めの問題については心配していません。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
任意の数の次元に対して実行可能な解決策を見つけたいと思っています。