给定矩阵:
a =
1 1 2 2
1 1 2 2
3 3 4 4
3 3 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
有没有什么方法可以在没有迭代的情况下完成此任务或以其他方式改进我的迭代方法?