我有一个数组:
1 1 1 0 0
1 2 2 0 0
1 2 3 0 0
0 0 0 0 0
0 0 0 0 0
我想成功
1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1
这就像将 1/4 块馅饼旋转 270 度以填充馅饼的其余部分以形成一个完整的圆圈。基本上在各个方向上镜像整个角落。如果可能的话,我不想使用任何内置的 matlab 功能——如果可能的话,只是一些矢量技巧。谢谢。
编辑:
这嵌入在任意大小的零矩阵中。我希望它在上面的例子中都能工作,并说这个例子:
0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 1 1 0 0 0 0 0 0 0 0 0
0 0 1 2 2 0 0 0 0 0 0 0 0 0
0 0 1 2 3 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0
理想情况下,我希望有一个向量说 [1,2,3.. N],它可以围绕以网格中某个点 xc,yc 为中心的数组 (N) 中的最大值循环旋转。或者,如果这是不可能的,取一个基本数组 [1 1 1, 1 2 2, 1 2 3] 并旋转它,使 3 在中心,然后像上面的第二个矩阵一样填充一个圆圈。
编辑:
我发现 rot90(M,k) 旋转矩阵 M k 次,但这会产生:
Mrot = M + rot90(M,1) + rot90(M,2) + rot90(M,3)
Mrot =
1 1 2 1 1
1 2 4 2 1
2 4 12 4 2
1 2 4 2 1
1 1 2 1 1
这会将其堆叠在不正确的 x,y 方向上。