【发布时间】:2020-07-23 13:23:16
【问题描述】:
我有一个 50x50 的矩阵,我想将每个 10x10(或另一个设定的大小值 - 始终为正方形)重叠网格中的值相加,即:
为清楚起见,重叠窗口仅显示在对角线上。我尝试做的第一个任务是定义每个窗口的坐标:
win=10;
start = [1,10,1,10];
for y=1:(50-win)
for g=1:(50-win)
tmp = [start(g,1)+1,start(g,2)+1,start(end,3),start(end,4)];
start = [start;tmp];
end
start(end+1,1:4) = [1,10,1+y,10+y];
end
然后我会遍历坐标列表,使用sum 和每个窗口的逻辑索引。
问题#1:上面的代码不是特别有说服力。任何人都可以展示一种更“MATLABesque”的方式或更简洁的方式吗?
问题 #2:然后我想在矩阵中定义一个特定的坐标(索引),例如m(26,26) 并获取包含此坐标的所有窗口的列表。但我不知道该怎么做。谁能告诉我怎么做?
【问题讨论】:
-
滑动窗口求和可以使用
result = conv2(A, ones(10), 'valid');完成 -
窗口是垂直滑动、水平滑动还是任意方向滑动?
-
@kkuilla 全方位。我想要每一个可能的 10x10 窗口。