logo

줄리아에서 원형 배열 사용하는 법 📂줄리아

줄리아에서 원형 배열 사용하는 법

개요

사실 줄리아에서 네이티브한 원형 배열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