logo

줄리아에서 벡터를 생성하는 여러가지 방법 📂줄리아

줄리아에서 벡터를 생성하는 여러가지 방법

코드

julia> x1=[1 2 3]
1×3 Array{Int64,2}:
 1  2  3

julia> x2=[1, 2, 3]
3-element Array{Int64,1}:
 1
 2
 3

julia> x3=[i for i in 1:3]
3-element Array{Int64,1}:
 1
 2
 3

julia> x4=[i for i in 1:3:10]
4-element Array{Int64,1}:
  1
  4
  7
 10

julia> x5=[i for i in 1:3:11]
4-element Array{Int64,1}:
  1
  4
  7
 10

x1은 2차원 배열이다. 생겨먹은건 행벡터와 같기 때문에 성분 좌표를 1개만 입력하면 행벡터인 것 처럼 인식한다. x2, x3, x4, x5 는 1차원 배열이다.

  • x=[i for i in n:m]과 같이 입력하면 $n$부터 $m$까지 간격이 $1$인 배열을 반환한다.
  • x=[i for i in n:k:m]과 같이 입력하면 $n$부터 $m$까지 간격이 $k$인 배열을 반환한다.

마지막 성분은 $n+ik$가 $m$보다 작거나 같은 수 중에서 제일 큰 수이다. 이렇게 리스트 안에 for문을 포함해서 리스트를 만드는 것을 파이썬 등에서는 리스트 컴프리헨션List Comprehension이라고 한다.

julia> x6=1:3
1:3

julia> x7=1:3:10
1:3:10

julia> x9=1:3:11
1:3:10

위와 같이 작성하면 실제로 그렇지는 않지만, 사실상 x3, x4, x5와 같은 배열이 생성됐다고 생각하면 된다. 아래 사진에 나타난바와 같이 자료형은 다르지만 위에서 만든 것과 같이 사용할 수 있다.

  • range(n,stop=m,length=k): 이는 매트랩에서 lispace(n,m,k)와 정확하게 같다. 구체적인 차이점은 아래의 예제코드와 결과를 통해 알아보자.
julia> x9=range(1,stop=10)
1:10

julia> x10=range(1,length=15)
1:15

julia> x11=range(1,stop=10,length=15)
1.0:0.6428571428571429:10.0

julia> x12=range(1,length=15,stop=10)
1.0:0.6428571428571429:10.0

위 코드도 마찬가지로 실제 자료형은 다르지만 사실상 같은 벡터를 생성한다고 생각하면 된다. 매트랩과는 다르게 두번째, 세번째 변수 중 하나만 입력할 수도 있고 입력하는 순서를 바꿔도 상관없다.

  1. 첫번째 줄 은 첫번째 성분이 $1$, 마지막 성분이 $10$인 벡터를 반환한다. 그 외에는 입력한게 없으므로 성분 사이의 간격은 $1$이다.
  2. 두번째 줄 은 첫 성분이 $1$이고 총 $15$개의 성분을 갖는 벡터를 반환한다. 간격은 자동으로 $1$이고 x=range(1,stop=15)x=1:15로 만든 벡터와 같다.
  3. 세번째 줄 은 첫번째 성분이 $1$, 마지막 성분이 $10$이고 총 $15$개의 성분을 가지는 벡터를 반환한다. 따라서 간격은 자동으로 $9/14=0.6428571428571429$이다. 이는 정수가 아니므로 자연스럽게 실수 성분을 가지는 벡터를 반환한다. 또한 x=1.0:0.6428571428571429:10.0로 생성한 것과 같다.
  4. 네번째 줄 은 세번째 줄에서 반환한 벡터와 정확히 같은 벡터를 반환한다.

타언어

환경

  • OS: Windows10
  • Version: 1.5.0