我有一个2D网格,想从X、Y开始并保存窗口(W)和重叠(OP)的角落。我尝试了这些代码(链接),但没有一个适合我的目的。
如图所示,我想从一个随机点(黑色单元格)开始,并在螺旋循环中保存每个新窗口的角落位置(由黑色圆圈表示)。该算法可用于任何网格大小(不仅限于正方形)和任何起始点位置。
Matlab也有一个类似于我想要的函数(spiral),但它不接受网格、窗口大小和重叠(OP)。
我期望这个图的输出如下:(8,12) (11,12) (11,9) (8,9) (4,9) (4,12) (4,15) ...
我正在使用以下代码,从一个角落开始,使用定义的W、OP和矩阵大小逐步填充矩阵:
如图所示,我想从一个随机点(黑色单元格)开始,并在螺旋循环中保存每个新窗口的角落位置(由黑色圆圈表示)。该算法可用于任何网格大小(不仅限于正方形)和任何起始点位置。
Matlab也有一个类似于我想要的函数(spiral),但它不接受网格、窗口大小和重叠(OP)。
我期望这个图的输出如下:(8,12) (11,12) (11,9) (8,9) (4,9) (4,12) (4,15) ...
我正在使用以下代码,从一个角落开始,使用定义的W、OP和矩阵大小逐步填充矩阵:
W = [10 12];
OP = [4 3];
M = zeros(100,110);
for i=[1:W(1)-OP(1):size(M,1)-W(1), size(M,1)-W(1)+1]
for j=[1:W(2)-OP(2):size(M,2)-W(2), size(M,2)-W(2)+1]
block = rand(W(1),W(2));
M(i:i+W(1)-1, j:j+W(2)-1) = block;
imagesc(M); axis equal tight xy
pause(.1)
end;
end;
更明确地说,我应该如何更改“上面”的代码,以便从位置(x,y)开始,并根据W、OP和size(M)螺旋填充整个矩阵。
谢谢!
(8,12) (11,12) (11,9) (8,9) (5,9) (5,12) (5,15)
,所以步长始终为3? - Daniel