小编Nic*_*ing的帖子

在MATLAB中考虑连续矩阵块的最大值

鉴于矩阵:

a =
   1   1   2   2
   1   1   2   2
   3   3   4   4
   3   3   4   4
Run Code Online (Sandbox Code Playgroud)

我想得到以下四个2x2矩阵:

a1 =
   1   1
   1   1

a2 =
   2   2
   2   2

a3 =
   3   3
   3   3

a4 =
   4   4
   4   4
Run Code Online (Sandbox Code Playgroud)

从那里,我想取每个矩阵的最大值,然后将结果重新整形为2x2结果矩阵,如下所示:

r =
   1   2
   3   4
Run Code Online (Sandbox Code Playgroud)

结果最大值相对于其在初始矩阵中的原始位置的位置是重要的.

目前,我正在使用以下代码来完成此任务:

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
Run Code Online (Sandbox Code Playgroud)

这有效,但似乎必须有一种不涉及迭代(矢量化)的方法.

我尝试使用reshape像这样: …

matlab matrix vectorization

5
推荐指数
1
解决办法
274
查看次数

标签 统计

matlab ×1

matrix ×1

vectorization ×1