줄리아에서 벡터를 생성하는 여러가지 방법
코드
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$, 마지막 성분이 $10$인 벡터를 반환한다. 그 외에는 입력한게 없으므로 성분 사이의 간격은 $1$이다.
- 두번째 줄 은 첫 성분이 $1$이고 총 $15$개의 성분을 갖는 벡터를 반환한다. 간격은 자동으로 $1$이고
x=range(1,stop=15)
나x=1:15
로 만든 벡터와 같다. - 세번째 줄 은 첫번째 성분이 $1$, 마지막 성분이 $10$이고 총 $15$개의 성분을 가지는 벡터를 반환한다. 따라서 간격은 자동으로 $9/14=0.6428571428571429$이다. 이는 정수가 아니므로 자연스럽게 실수 성분을 가지는 벡터를 반환한다. 또한
x=1.0:0.6428571428571429:10.0
로 생성한 것과 같다. - 네번째 줄 은 세번째 줄에서 반환한 벡터와 정확히 같은 벡터를 반환한다.
타언어
환경
- OS: Windows10
- Version: 1.5.0