줄리아에서 행렬을 행별, 열별로 스칼라곱하는 법
개요
줄리아의 행렬에 행별, 열별로 스칼라곱하는 법을 소개한다.
코드
julia> d = 1:10
1:10
julia> X = ones(Int64, 10, 10)
10×10 Matrix{Int64}:
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
위와 같이 벡터 d
와 1행렬 X
가 주어져 있을 때, 곱셉 *
의 브로드 캐스팅을 통해 X
의 행 혹은 열 별로 스칼라곱을 수행할 수 있다. 이 때 왼쪽에서 곱하느냐 오른쪽에서 곱하느냐는 똑같지만, 벡터가 세로로 긴지 가로로 긴지에 따라 행/열이 달라진다.
행별 스칼라곱 X .* d
행별 스칼라곱을 위해서는 세로로 긴 벡터, 즉 $d \in \mathbb{R}^{n \times 1} \approx \mathbb{R}^{n}$ 이 필요하다.
julia> X .* d
10×10 Matrix{Int64}:
1 1 1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2 2 2
3 3 3 3 3 3 3 3 3 3
4 4 4 4 4 4 4 4 4 4
5 5 5 5 5 5 5 5 5 5
6 6 6 6 6 6 6 6 6 6
7 7 7 7 7 7 7 7 7 7
8 8 8 8 8 8 8 8 8 8
9 9 9 9 9 9 9 9 9 9
10 10 10 10 10 10 10 10 10 10
julia> d .* X
10×10 Matrix{Int64}:
1 1 1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2 2 2
3 3 3 3 3 3 3 3 3 3
4 4 4 4 4 4 4 4 4 4
5 5 5 5 5 5 5 5 5 5
6 6 6 6 6 6 6 6 6 6
7 7 7 7 7 7 7 7 7 7
8 8 8 8 8 8 8 8 8 8
9 9 9 9 9 9 9 9 9 9
10 10 10 10 10 10 10 10 10 10
열별 스칼라곱 X .* d'
행별 스칼라곱을 위해서는 가로로 긴 벡터, 즉 $d \in \mathbb{R}^{1 \times n} $ 이 필요하다.
julia> X .* d'
10×10 Matrix{Int64}:
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
julia> d' .* X
10×10 Matrix{Int64}:
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
전체 코드
d = 1:10
X = ones(Int64, 10, 10)
X .* d
d .* X
X .* d'
d' .* X
환경
- OS: Windows
- julia: v1.9.0