与えられたマトリックス:
a =
1 1 2 2
1 1 2 2
3 3 4 4
3 3 4 4
次の 4 つの 2x2 行列を取得したいと思います。
a1 =
1 1
1 1
a2 =
2 2
2 2
a3 =
3 3
3 3
a4 =
4 4
4 4
そこから、各マトリックスの最大値を取得し、結果を次のように 2x2 結果マトリックスに再形成します。
r =
1 2
3 4
初期行列の元の位置に対する結果の最大値の位置は重要です。
現在、これを達成するために次のコードを使用しています。
w = 2
S = zeros(size(A, 1)/w);
for i = 1:size(S)
for j = 1:size(S)
Window = A(i*w-1:i*w, j*w-1:j*w);
S(i, j) = max(max(Window));
end
end
これは機能しますが、反復 (ベクトル化) を伴わない方法が必要なようです。
私はそのように reshape を使用しようとしました:
reshape(max(max(reshape(A, w, w, []))), w, w, [])
しかし、それは間違った値の最大値を取り、戻ります:
ans =
3 4
3 4
反復せずにこれを達成する方法、または反復法を改善する方法はありますか?