줄리아에서 원형 배열 사용하는 법
개요
사실 줄리아에서 네이티브한 원형 배열circular Array을 지원하지는 않지만, 사실상 그렇게 사용할 수 있도록 원소를 환형으로circularly 밀거나 당겨주는 circshift()
함수를 제공한다1. 직접 짜기에 별로 어려운 함수는 아니지만 안다면 굳이 짤 필요가 없다. 이 함수는 매트랩에서의 circshift()
와 거의 똑같은 방식으로 사용할 수 있다.
코드
이 함수는 기본적으로 배열을 평행이동시키는 방법 포스트에서도 소개된 바 있다.
기본적인 사용법
julia> circshift(1:4, 1)
4-element Vector{Int64}:
4
1
2
3
julia> circshift(1:4, -1)
4-element Vector{Int64}:
2
3
4
1
circshift()
은 기본적으로 두번째 인자에 정수를 넣어서 원소를 밀거나 당긴다. 위의 예에서는 양의 정수에 대해서 뒤로(아래로) 진행하고, 음의 정수에 대해서 앞으로(위로) 진행한 것을 확인할 수 있다.
다차원 배열
julia> ca = reshape(1:20, 5, :)
5×4 reshape(::UnitRange{Int64}, 5, 4) with eltype Int64:
1 6 11 16
2 7 12 17
3 8 13 18
4 9 14 19
5 10 15 20
위와 같은 다차원 배열이 주어져 있다고 할 땐 다음과 같이 차원이 같은 튜플을 주어서 각 차원마다 얼마나 밀고 당길지를 정한다.
julia> circshift(ca, (0,1))
5×4 Matrix{Int64}:
16 1 6 11
17 2 7 12
18 3 8 13
19 4 9 14
20 5 10 15
julia> circshift(ca, (-1,0))
5×4 Matrix{Int64}:
2 7 12 17
3 8 13 18
4 9 14 19
5 10 15 20
1 6 11 16
julia> circshift(ca, (-1,1))
5×4 Matrix{Int64}:
17 2 7 12
18 3 8 13
19 4 9 14
20 5 10 15
16 1 6 11
전체코드
circshift(1:4, 1)
circshift(1:4, -1)
ca = reshape(1:20, 5, :)
circshift(ca, (0,1))
circshift(ca, (-1,0))
circshift(ca, (-1,1))
환경
- OS: Windows
- julia: v1.8.5