의 일부 지점 (X)에 대한 어레이 (Y)에 대해 원형으로 임의의 길이의 벡터 회전 :는 I 배열이 MATLAB
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
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1
/원형의 4 조각은 270 도의 원형 부분을 채우기 위해 나머지 부분을 채 웁니다. 기본적으로 전체 구석을 모든 방향으로 미러링합니다. 가능한 경우 빌드 된 MATLAB 기능을 사용하고 싶지는 않습니다. 가능한 경우 벡터 트릭을 사용하십시오. 감사.
편집 :
이 임의의 사이즈의 제로의 매트릭스 내에 매립된다. I는이 예를 상기 실시 예 모두에서 작동하고 싶은 말 : I는 벡터 대답해야 할 이상적
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이 중앙에 오도록 회전하고 위의 두 번째 행렬에서와 같이 원을 채 웁니다.
EDIT :
제가 발견 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 방향으로 쌓입니다.
행이 3 개 밖에없는 방법이 있습니까? 즉, 임의의 NxN 배열에서 [1 2 3]을 가졌고 원형 주위에서 팬을 돌리고 싶기 때문에 각 x-y 방향에서 대칭입니다. – Griff
그냥 답안에서 주어진대로 M을 만들고 그것을 더 큰 0의 행렬에 삽입합니다. – thang