H=h11h21h31⋮hm1h12h22h32⋮hm2h13h23h33⋮hm3⋯⋯⋯⋱⋯h1nh2nh3n⋮hmn
주어진 행렬H=(hij)∈Rm×n 가 모든 k=2,3,⋯,m+n 에 대해 다음을 만족하면 한켈 행렬Hankel matrix라 한다.
i1+j1=k=i2+j2⟹hi1j1=hi2j2
다시 말해, 한켈 행렬이란 다음과 같이 반대각선의 성분이 모두 같은 행렬이다.
H=h2h3h4⋮hm+1h3h4h5⋮hm+2h4h5h6⋮hm+3⋯⋯⋯⋱⋯h1+nh2+nh3+n⋮hm+n
H=y1y2y3⋮ypy2y3y4⋮yp+1y3y4y5⋮yq+2⋯⋯⋯⋱⋯yqyq+1yq+2⋮yp+q시계열 데이터{yt}t=1(p+q) 에 대해서 위와 같은 한켈 행렬을 구성하고 그 특이값 분해H=UΣVT
를 보면 U 와 V 에 계층적인 분해가 나타난다고 한다1. 이렇게 시계열 데이터를 행렬로 만들어서 분석하는 것을 한켈 행렬 분석Hankel matrix analysis이라 한다.
function Hankelizer(vec)
@assert length(vec) % 2 == 1"vector must have odd length"
m = (length(vec) ÷ 2) + 1
H = zeros(eltype(vec), m, m)
for i ∈ 1:m, j ∈ 1:m
H[i,j] = vec[i+j-1]
endreturn H
end
elements = [8,2,0,6,5,1,5,4,0]
Hankelizer(elements)
function Hankelizer(vec, m, n)
@assert length(vec) == (m+n-1) "wrong dimensions"
H = zeros(eltype(vec), m, n)
for i ∈ 1:m, j ∈ 1:n
H[i,j] = vec[i+j-1]
endreturn H
end
Hankelizer([elements; 1], 3, 8)
Hankelizer([elements; 1], 2, 9)
Brunton. (2017). Chaos as an intermittently forced linear system: Supplementary Material p7. ↩︎