logo

줄리아에서 행렬을 행별, 열별로 스칼라곱하는 법 📂줄리아

줄리아에서 행렬을 행별, 열별로 스칼라곱하는 법

개요

줄리아행렬행별, 열별로 스칼라곱하는 법을 소개한다.

코드

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

위와 같이 벡터 d1행렬 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