私は配列を持っています:
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 が中心になるように回転させ、上記の 2 番目の行列のように円を塗りつぶします。
編集:
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 方向にスタックします。